-1

如果内部向量被重新定义,我已经在内部遇到了一些问题std::vectorstd::vector我想知道拥有 a 是否完全安全std::vector<std::string>(因为可以重新调整内部字符串的尺寸)还是std::vector<std::string*>更好?

4

2 回答 2

3

这个问题很可能是由于向量看起来与数组相同的误解造成的。

确实,数组必须包含相同类型和静态大小的元素,因为向量确实可以调整大小,但静态sizeof(vector<X>)不依赖于它的运行时大小。 vector<vector<X> >内部仅包含指向动态分配数组的指针(加上一些其他描述性数据),vector<X>其中每个数组又包含指向其自己的动态分配数组的指针X

这些数组实际上是由相同大小的相同元素组成的。

于 2012-09-06T11:57:09.327 回答
1

vector放置在符合标准类型要求的任何类型中都是非常安全的。这些要求在界面上都有严格的规定,基本概括为“可移动”。由于std::string是可移动的,它可以放置在vector. 它可能动态分配其他内存的事实是无关紧要的。

于 2012-09-06T12:00:18.437 回答