vector<int> arr;
arr[ ]和arr.at()都可以对arr中元素进行访问,[ ]不做边界检查,at会做边界检查,所以原理上来讲,使用at()访问肯定要比[ ]慢,但具体慢多少个数量级呢?写了个循环,每次循环中读arr中的元素,再写入。
在手机上跑对比运行时间
vector<int> arr = {1, 2};
for(int i = 0; i < 1000000000; i++) {
int a = arr.at(i%2);
arr.at(i%2) = a;
}
for(int i = 0; i < 1000000000; i++) {
int a = arr[i%2];
arr[i%2] = a;
}
当循环10亿次,使用at()耗时120ms左右,使用[ ]耗时不超过1ms;
当循环1亿次,使用at()耗时16ms左右,使用[ ]耗时不超过1ms;