vector 访问元素的两种方法比较
2016-12-06 20:57
274 查看
访问vector中的元素有两种方法:
(1)vector<T>::at。该成员函数会进行下标越界检查,确保当前vector中的确包含了需要的元素;
(2)vector<T>::operator[]。根据C++98标准,vector<T>::operator[]可以但是不一定会进行下标越界检查;
例如 有下面的代码:
AB两行代码 都是想访问v的第一个元素,如果v非空,那么这两行代码没有任何区别;如果v是空的,B行将会抛出一个std::out_of_range异常,但是A会发生什么,标准并没有任何说明。
至于标准为什么不要求operator[]实施下标越界检查,效率!设置vector的目的就是代替内置的数组,因此效率应该与内置数组保持一致,内置数组在进行下标索引时并不会进行越界检查,如果真的需要进行越界检查,可以使用at。
本文参考《C++编程剖析》Herb Sutter 著 刘未鹏 译
(1)vector<T>::at。该成员函数会进行下标越界检查,确保当前vector中的确包含了需要的元素;
(2)vector<T>::operator[]。根据C++98标准,vector<T>::operator[]可以但是不一定会进行下标越界检查;
例如 有下面的代码:
void fun(vector<int>&v){ v[0]; //A v.at[0];//B }
AB两行代码 都是想访问v的第一个元素,如果v非空,那么这两行代码没有任何区别;如果v是空的,B行将会抛出一个std::out_of_range异常,但是A会发生什么,标准并没有任何说明。
至于标准为什么不要求operator[]实施下标越界检查,效率!设置vector的目的就是代替内置的数组,因此效率应该与内置数组保持一致,内置数组在进行下标索引时并不会进行越界检查,如果真的需要进行越界检查,可以使用at。
本文参考《C++编程剖析》Herb Sutter 著 刘未鹏 译
相关文章推荐
- 访问vector元素方法的效率比较(转)
- Vector两种插入数据的方法比较
- DWR3 访问WEB元素的两种方法实例详解
- DWR3访问WEB元素的两种方法
- Java编程之TreeSet排序两种解决方法(1)元素自身具备比较功能,元素需要实现Comparable接口覆盖compare(2)创建根据自定义Person类的name进行排序的Comparator
- 对于vector第一个元素访问的几种方法
- c++之Vector容器数据两种取值方法(指针访问,数组下标访问)
- 对python中两种列表元素去重函数性能的比较方法
- C++ vector 之 erase 多个元素的两种常用方法
- 两种获取元素所有兄弟节点的方法比较
- 【Practice】去除vector里重复元素的方法比较
- c++ vector指针访问vector元素的方法
- Element类提供的方法访问一个XML元素中含有的信息
- 两种方法删除ArrayList里重复元素
- thin 和 oci两种方法连接oracle数据库 比较
- 面向对象建模与数据库建模两种分析设计方法的比较
- PHP访问ACCESS数据库的两种方法
- 关于几种std::vector访问方法的效率
- 两种方法删除ArrayList里重复元素
- 两种比较典型的ASP木马防范方法2