3

我想知道当将向量推到向量向量上时容量是否会延续。

假设我有一个看起来像的代码

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

4

2 回答 2

1

被推回的项目的容量vec_of_vec.back()是实现定义的。

但是,由于tmp被复制到vec_of_vec(使用复制构造函数),原始tmp对象的容量在调用中是不变的vec_of_vec.push_back()

于 2013-08-14T19:14:35.983 回答
0

push_back将其参数复制到其中vec_of_vec,因此tmp不再引用其中的内容,vec_of_vec因此调用的是复制构造函数

于 2013-08-14T19:11:51.190 回答