arr.at(n)与arr[n]的含义一样,返回arr中第n个元素,唯一的区别在于at()函数比[]运算符更安全,因为at()不会去访问越界的元素。源码如下:
at()函数:
可以发现at()函数在使用进行了是否越界的判断,越界则抛出异常。
示例如下:
#include<iostream>
#include<string>
#include<cstring>
#include<string.h>
#include<vector>
using namespace std;
int main()
{
//const char *p;
vector<int> arr={1,2,3,4,5};
for(int i=0;i<arr.size();i++)
cout<<arr.at(i)<<" "<<arr[i]<<endl;
cout<<arr[5]<<endl;
cout<<arr.at(5)<<endl;
return 0;
}
在CLion的运行结果为:
1 1
2 2
3 3
4 4
5 5
0
libc++abi.dylib: terminating with uncaught exception of type std::out_of_range: vector