の単一パラメーターコンストラクターがデフォルトで構築可能な型であるstd::list<T>
必要があるのはなぜですか? T
つまり、次のコードはコンパイルされません。
struct Foo { // does not have default constructor.
Foo (int i) {}
}
int main(void) {
std::list<Foo> l(10);
}
リストクラスの簿記が増えますが、 std::vector で既に行われているように、コンストラクトと破棄のイディオムを使用することは可能であるようです。
関連するメモとして、容量関数をリストに入れてみませんか? このような関数はメモリ割り当てコストを前払いし、後で異議を唱えるとオーバーヘッドを排除すると主張できpush_back
ます。少なくとも、2 つの STL シーケンス コンテナーのインターフェイスの一貫性が少し向上します。