Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std::vector中的std::字符串?_C++_Stdvector_Stdstring_Dynamic Allocation - Fatal编程技术网

C++ std::vector中的std::字符串?

C++ std::vector中的std::字符串?,c++,stdvector,stdstring,dynamic-allocation,C++,Stdvector,Stdstring,Dynamic Allocation,如果内部向量被重新定尺寸,我已经在std::vector内部std::vector中遇到了一些问题。我想知道,拥有一个std::vector(因为内部字符串可以重新定尺寸)或std::vector是否是完全安全的?这个问题很可能是由于误解了vector看起来与数组相同 的确,数组必须包含相同类型和静态大小的元素,因为向量确实可以调整大小,但静态sizeof(vector)并不取决于它的运行时大小。 vector内部只包含指向动态分配的vector数组的指针(加上一些其他描述性数据),而每个数组又

如果内部向量被重新定尺寸,我已经在
std::vector
内部
std::vector
中遇到了一些问题。我想知道,拥有一个
std::vector
(因为内部字符串可以重新定尺寸)或
std::vector
是否是完全安全的?

这个问题很可能是由于误解了vector看起来与数组相同

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


实际上,阵列由相同的元素、相同的大小组成。

将满足标准类型要求的任何类型放置在
向量中是完全安全的。这些要求在接口上有严格规定,基本上概括为“可移动”。由于
std::string
是可移动的,因此可以将其放置在
向量中。它可能会动态分配其他内存这一事实与此无关。

什么问题?重新确定向量元素的大小(无论是向量还是字符串)没有内在的问题。如果MyClass包含std::string,使用std::vector可以吗?是的,它是完全安全的,使用向量向量也是如此。您遇到的这些问题是什么?从你告诉我们的情况来看,你不应该有任何问题。所以现在这里没有太多的答案。你过早的担心是因为你没有完全理解一个老错误的原因。如果您深入研究旧bug以找到真正的原因(因为向量的重新定尺寸不是它,我向您保证),那么您就不会不必要地担心这个:)