C++中vector的两种访问方式——vector[]与vector.at()的区别
C++中vector的两种访问方式——vector[]与vector.at()的区别说明当我们定义一个数组vectorb(10)后,b[]和b.at()都可以对v中元素进行访问,平时一般大家使用的都是v[]这种访问方法,以至于将v.at()这种访问方式忘记了。vector[]和vector.at()的区别b.v[]和b.at()都可以对v中元素进行访问,并且访问的元素时都不能越界,比如a[10]或
![](https://csdnimg.cn/release/devpress/public/img/ic-book.4f347164.png)
一键AI生成摘要,助你高效阅读
问答
·
C++中vector的两种访问方式——vector[]与vector.at()的区别
说明
当我们定义一个数组vector b(10)后,b[]和b.at()都可以对v中元素进行访问,平时一般大家使用的都是v[]这种访问方法,以至于将v.at()这种访问方式忘记了。
vector[]和vector.at()的区别
b.v[]和b.at()都可以对v中元素进行访问,并且访问的元素时都不能越界,比如a[10]或a.at(10)这样的使用会报错。区别在于,operator[]不做边界检查, 哪怕越界了也会返回一个引用,当然这个引用是错误的引用,如何不小心调用了这个引用对象的方法,会直接导致应用退出。而由于at会做边界检查,如果越界,会抛出异常,应用可以try catch这个异常,应用还能继续运行。
比如我们运行下面代码:
vector<int>v;
cout << v[0] << endl;
会直接报错:
运行.at代码:
vector<int>v;
cout << v.at(0) << endl;
使用try,catch:
vector<int>v;
try
{
cout << v[0] << endl;
}
catch (const exception& e)
{
cerr << e.what() << endl;
}
catch (...)
{
cerr << "error" << endl;
}
此时输出异常信息:
更多推荐
所有评论(0)