如果内部向量是重新设置的,我std::vector
内的std::vector
已经遇到了一些问题。我想知道std::vector<std::string>
是否完全安全(因为内部字符串可以重新设置)或std::vector<std::string*>
更好?
答案 0 :(得分:3)
这个问题很可能是误解的后果,它看起来与数组相同。
数组必须包含相同类型和静态大小的元素,因为向量可以调整大小,但静态sizeof(vector<X>)
不依赖于它的运行时大小。
vector<vector<X> >
内部只包含指向动态分配的vector<X>
数组的指针(加上一些其他描述性数据),每个数组都包含指向其自身动态分配的X
数组的指针。
这些数组实际上是由相同大小的相同元素组成的。
答案 1 :(得分:1)
放置符合标准类型要求的vector
任何类型都是完全安全的。这些要求在界面上严格规定,基本上总结为“可移动”。由于std::string
是可移动的,因此可以将其放置在vector
中。它可能动态分配其他内存这一事实无关紧要。