【发布时间】:2013-07-12 22:03:39
【问题描述】:
vector.at(i) 和 vector[i] 有什么区别?
vector<int> myVector(6);
myVector.at(5) = 5;
或
myVector[5] = 5;
我知道两者产生相同的结果,但不知何故,运算符[] 更快。我还读到了at 检查向量大小(边界)并返回超出范围错误,而[] 没有。
但是我看到如果尝试分配:
myVector[8] = 1;
我在调试模式下遇到类似的超出范围错误。
那么at是什么意思呢?为什么它在 STL 中?
【问题讨论】:
-
可能是在调试模式下,您的特定向量实现甚至对
[]运算符都有范围检查。您确实必须检查您正在使用的库的文档。 -
任何参考资料都应该告诉你。如果您不相信有效性,请查看标准。