今天我在 VS2012 和 Max OS 10.7 中尝试这样的事情
vector<int> vec;
vector<int> vec2;
for(int i = 0;i < 100 ;i++){
vec.push_back(i);
}
cout << "size: " << vec.size() << endl;
cout << "capacity: " << vec.capacity() << endl;
cout << vec[127] << endl;
//vec2.reserve(10);
fill_n(vec.begin(),128,-1);
cout << vec[127] << endl;
return 0;
因为我们知道vector的大小是容器中元素的实际数量,上面的代码可能会导致VS2012中的运行时错误,但它在Max OS上运行良好,我在Ideone.com上尝试过,也运行成功,我是不确定大小和容量的定义是否有问题,为什么我可以访问超出大小的元素?
PS:我电脑上这种情况的容量在VS2012上是141,在Mac OS和Ideone.com上是128