向量的增长功能如何运作?

San*_*n G -6 c++ stdvector c++14

int main () {
    std::vector <int> elements;
    elements.push_back (1);
    elements [10000] = 102;
    std:: cout << elements [10000];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码如何工作?据我所知,矢量的增长率为1.5 - 2倍.那么第10000个元素如何存储在这里?这里的预期行为不是"分段错误"吗?但以上运行成功.

eer*_*ika 6

那么第10000个元素如何存储在这里?

元素存储在向量中.它被"存储"在一个与向量无关的内存中.

这里的预期行为不是"分段错误"吗?

不行.行为未定义,因此没有预期的行为.

但以上运行成功.

当行为未定义时,这是一种可能的行为.