ベクトルをベクトルのベクトルにプッシュすると、容量が引き継がれるかどうか疑問に思っていました。
次のようなコードがあるとします
std::vector< std::vector< int > > vec_of_vec;
std::vector< int > tmp;
for (int i = 0 ; i < 100; ++i) {
foo(tmp,i); // fills tmp with an arbitrary number of ints, different for each i.
vec_of_vec.push_back(tmp);
tmp.clear();
}
現在、.clear()
は容量を削減しないため、 の特定のインスタンスtmp
が より小さい場合tmp.capacity()
、 に押し戻されるtmp.capacity()
と収まるように縮小されます。つまり、どのコンストラクターが push_back 呼び出しを行い、そのプロセスで容量が変更されるのでしょうか?tmp.size()
vec_of_vec