vector 是可以直接用下标进行访问的一类容器

vector <int> A;
A.push_back(1);
cout<<A[0];

输出:1


但是,有些资料上说vector 最好用at() 进行访问,这是为什么呢?

这是因为at()有对元素是否越界进行判断,如果越界,马上抛出异常 out_of_range
(但是,这个异常是跟踪进去调试的时候才会出现的)

如果在执行的时候报错的话是这样的:
很“ 蛋疼 ”,这个信息什么意思??一头雾水。。。。。。

下面再看看下标访问越界的情况,看下图:

很明确的告诉我们vector 越界了!这个报错多友好呐~

不过用下标访问确实也有不好的地方,下面给出解释:
如果用下标访问的话,它是不会检查是否越界的,一路莽下去,直到出错了才停止(当初我试着跟踪进去,走了几分钟都还没报错,而at()很快就报错了)。
在这里,不进行检查是为了提高 vector 容器的效率。

在 vec 非空的情况下,即使下标越界,也有可能对应的内存是可读写的,至于读到的是什么内容,或者写到什么地方,就是随机事件了。

上文引用于:https://blog.csdn.net/luansxx/article/details/10194171
(后来查到的资料,恍然大悟为什么我能跟踪进去那么久)呜~~~~(>_<)~~~~

综上:我还是觉得在写代码的时候还是可以继续用下标访问,因为比较好知道出错的原因。

个人拙见,如果有错,感谢指出。

vector at()和下标访问哪个好?相关推荐

  1. Swift Tips - 在 Swift 中自定义下标访问

    Untitled Document.md 在 Swift 中,我们可以使用下标轻松的访问数组中的元素.比如这样: var numbers:Array = [1,2,3,4,5] println(num ...

  2. 【Groovy】集合声明与访问 ( 使用 [] 创建 ArrayList 和 LinkedList 集合 | 集合赋初值 | 使用下标访问集合 | 使用 IntRange 作为下标访问集合 )

    文章目录 一.使用 [] 创建集合 1.使用 [] 创建 ArrayList 集合 2.使用 [] 创建 LinkedList 集合 二.访问集合中的元素 1.集合赋初值 2.使用下标访问集合元素 ( ...

  3. golang中string下标访问

    看一下golang中string的下标访问. package mainimport "fmt"func main() {x := "123"fmt.Printl ...

  4. c++ string 无法通过下标访问_数组下标1你见过吗?

    作者:守望,Linux应用开发者,目前在公众号[编程珠玑] 分享Linux/C/C++/数据结构与算法/工具等原创技术文章和学习资源. 不知道你有没有见过-1作为数组下标的,我算是见到了.当然这一点在 ...

  5. 封装Python列表实现多下标访问

    class MyArray(object): def __init__(self, values): #values can be of any kinds which can be converte ...

  6. python不支持下标访问元素吗_Python 集合不支持使用下标访问其中的元素

    Python 集合不支持使用下标访问其中的元素 答:对 下列对于新创企业的优势的描述中,错误的是(). 答:开拓新市场投资多,但潜在的回报少 与欧洲近代科学革命相比,18世纪美国科学发展的优势是() ...

  7. C++ map下标访问的问题

    2019独角兽企业重金招聘Python工程师标准>>> 先简单介绍一下map,C++中的map属于STL的范畴,通过key-value的方式保存. map的插入,插入map有两种方式 ...

  8. matlab 连续下标表示,MATLAB通过下标访问多个数组元素

    在<MATLAB通过下标访问数组元素>中我们讲解了如何通过下标来访问数组中的某一个元素,除此之外,MATLAB 还允许通过下标一次性访问多个元素. 使用冒号指明下标范围 MATLAB 允许 ...

  9. 【C++基础】删除vector中指定下标元素

    [C++基础]删除vector中指定下标元素 vector<int> nums(n);1. 删除指定一个 i, auto it = nums.begin(); nums.erase(it+ ...

最新文章

  1. poj1274(二分图匹配)
  2. TCP三次握手建立连接的过程
  3. Monkey脚本编写
  4. Mapgis6.7 林相图自动注记 .
  5. junit5和junit4_JUnit 5 –基础
  6. ValueError: too many values to unpack
  7. 身价百亿的中本聪是如何打造出“创世区块”的?
  8. 机器学习入门——线性回归详细分析
  9. Altium Designer17.1版本使用教程
  10. 数据挖掘概念与技术(第三版)课后答案——第一章
  11. 被誉为现代电子计算机之父是,成教云: 人们习惯上尊称图灵为现代电子计算机之父。...
  12. 大学计算机基础第一章知识点归纳,《大学计算机基础》主要知识点
  13. Delphi下实现鼠标自动点击器
  14. 云之讯官方测试Demo音频版源码阅读(编辑)
  15. No enclosing instance of type testTry is accessible. Must qualify the allocation...之解决方法
  16. 算法初步 计算机程序,算法初步-程序框图
  17. 2018.8.18日,直播笔记
  18. CCF201403-5 任务调度
  19. wi ndows自带截图工具,不想装截图工具?这里有 5 个 Windows 自带截图小技巧
  20. PHPCMS留言板制作

热门文章

  1. 企微机器人使用及内容配置文档
  2. 用于实时人与物体交互检测的并行点检测和匹配
  3. 如何用MASM5.0 (图解)
  4. 国内AI众包竞赛加速发展,云计算成助推器
  5. 网站服务器 千牛,云服务器千牛
  6. 中国布洛芬产能全球第一,为何我们还是买不到?
  7. k8s部署java项目
  8. 微信小程序调用百度文字转语音API
  9. 参加大数据培训之后就业情况怎么样?
  10. 上海为什么更需要“自贸区”?