C ++中向量的随机访问

时间:2018-08-08 15:49:01

标签: c++ vector random-access

在c ++中尝试随机访问一个空向量时,存在分段错误。

vector<int> g;
cout<<g[3];  //Segmentation fault

但是,如果我们执行一次push_back()操作,那么我们可以进行随机访问,不会出错:

vector<int> g;
g.push_back(1);
cout<<g[0]; //output = 1
cout<<g[3]; //output = 0

这是什么原因?

1 个答案:

答案 0 :(得分:4)

尝试获取该向量的界线之外的std::vector元素的行为为 undefined 不要这样做,也不要依赖任何行为。

也许您的push_back导致std::vector占用了过多的内存,以防止频繁的重新分配和内存碎片整理?