矢量指针位置保证?

twe*_*ypi 8 c++ pointers vector

假设我有一个整数向量,

std::vector<int> numbers;
Run Code Online (Sandbox Code Playgroud)

那是用一堆值填充的,然后我说这样做(43处存在一个条目)

int *oneNumber = &numbers[43];
Run Code Online (Sandbox Code Playgroud)

oneNumber是否保证始终指向索引43处的int,即使我说我将数字调整为像numbers.resize(46)这样的数字?

我不是100%确定预期的行为是什么,我知道向量保证是连续的但不确定这种连续性是否也意味着向量中的所有索引在其整个生命周期中将保持在同一位置.

Mys*_*ial 7

是否保证oneNumber始终指向索引43处的int

是的,这是由标准保证的.

即使我说我将数字调整为像numbers.resize(46)这样的东西?

不可以.在向量调整大小,添加或删除任何内容后,所有地址和迭代器都将失效.这是因为可能需要使用新的存储器位置重新分配向量.