我想知道当将矢量推到矢量矢量上时容量是否会延续。
说我的代码看起来像
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()
会缩小以适应tmp.size()
一次它被推回到vec_of_vec
?即哪个构造函数执行push_back调用,并且在进程中修改了容量?
答案 0 :(得分:1)
项目推回vec_of_vec.back()
的容量是实现定义的。
但是,由于tmp
被复制到vec_of_vec
(使用复制构造函数),原始tmp
对象的容量在vec_of_vec.push_back()
调用中保持不变。
答案 1 :(得分:0)
push_back
将其参数复制到vec_of_vec
中,因此tmp
不再引用vec_of_vec
中的内容,因此它是名为