STL容器vector的下标运算符[]

来源:互联网 发布:网络桥接怎么设置 编辑:程序博客网 时间:2024/06/15 23:52

       对于容器vector,[]操作符的作用是获取相应位置上的值,有的时候使用不当就会造成问题,请看下面例子:

[cpp] view plain copy
  1. vector<int> vec;  
  2. cout<<vec[0]<<endl;  

       上面的代码会出现Segmentation fault (core dumped),这是因为vec里面没有元素,还没有分配内存空间以存储元素,却对vec的0位置作出访问,因此等同于指针越界访问。正常的情况下,大家可能都不会写出以上的代码,但是当程序越来越大,函数调用层次越来越深的时候,这些问题就可能会出现了,这个例子也是本人在工作中遇到过的,当时加了很多日志才找到这个问题,在这里提醒一下自己,也提醒一下大家。
       为了避免程序crash,在访问vector的元素时,强烈建议还是先调用函数size()判断一下vector是否有元素。