【发布时间】:2013-12-20 05:33:55
【问题描述】:
假设你有一个向量的向量:
vector<vector<string> > v;
当外部向量的内部数组被调整大小时(假设内部数组也必须重新分配到不同的地址),例如通过大量v.push_back(),内部向量的内部数组是否被复制以及(因为向量的复制构造函数通常会复制内部数组),或者 C++ 是否有办法调整外部向量的大小而无需递归复制所有内容?
C++11 移动构造函数会影响这个吗?这是否取决于 STL 实现?
【问题讨论】:
-
附带说明,字符串对象将被重新分配,而不是字符串本身,因为它们在实例之间共享并且仅在写入时重新分配(即写入时复制)。所以它并不便宜,但每个字符串缓冲区根本不会复制。