C++ vector resize元素重新排序?

Adr*_*iaz 6 c++ vector

如果我的矢量开头有一些信息,例如:

vector<int> ordered_set;
ordered_set.resize(5);
for (int counter=0; counter<5; counter++){
ordered_set[counter]=counter+1;
}
Run Code Online (Sandbox Code Playgroud)

然后我将其调整为:

ordered_set.resize(10,0);
Run Code Online (Sandbox Code Playgroud)

通过指针算术,仍然可以保证1到5作为前五个元素ordered_set[0,1,2..4]吗?或者,如果没有找到调整大小的连续内存并且需要重新分配,标准是否允许内容置换?换句话说ordered_set[0,1,2..4]可能会遇到0?

Sto*_*ica 7

A std::vector被定义为元素的连续容器.如果向量的分配器在调整大小时无法提供足够的内存,则向量将不会"破裂".由于抛出异常,它无法保持其不变性,因此操作根本无法完成.

对于指针运算,您可以确保在调整大小后遍历向量将生成您之前放置的相同整数值.但是请确保不要使用在调整大小之前获得的任何指针或迭代器,因为这些指针或迭代器将变得无效.