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