C++ STL向量、push_back()和容量

C++ STL向量、push_back()和容量,c++,vector,capacity,C++,Vector,Capacity,我想知道当一个人把一个向量推到一个向量向量上时,这种能力是否会继续存在 假设我有一个代码 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 eac

我想知道当一个人把一个向量推到一个向量向量上时,这种能力是否会继续存在

假设我有一个代码

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();
}
std::vector>vec\u/vec;
std::vectortmp;
对于(int i=0;i<100;++i){
foo(tmp,i);//用任意数量的int填充tmp,每个i不同。
向量的向量推回(tmp);
tmp.clear();
}

现在,由于
.clear()
不会减少容量,如果
tmp
的一个特定实例小于
tmp.capacity()
,那么
tmp.capacity()
一旦推回到
vec
上,它将收缩以适应
tmp.size()
?i、 e.哪个构造函数执行push_-back调用,并且在这个过程中容量被修改了?

push_-back
将它的参数复制到
vec-of-vec
中,所以
tmp
不再引用
vec-of-vec
中的
vec-of-vec.back()的项的容量
,是实现定义的


但是,由于
tmp
被复制到
vec\u of_-vec
(使用复制构造函数),因此原始
tmp
对象的容量在
vec.push\u of_-vec.back()调用中保持不变。
谢谢!我想我可以通过阅读“重复”问题猜出答案:)。我当时很困惑,没有意识到复制构造函数一定会被调用。我在那里打了一个心理医生对fit()的电话,以确保无论实现如何,vec.back()的vec\u始终是紧密配合的。是的,我真的不觉得这是重复的,你有一个非常具体的问题,通过阅读重复的内容和答案,你不会马上发现。