c++ - 通过 operator[] 和 .at() 访问 vector 的负索引

标签 c++ c++11 vector stl indexoutofboundsexception

vector<int> input = {1, 2, 3, 4, 17, 117, 517, 997};
cout<< "input vector at index -1 is: " << input[-1] <<endl;

使用上面的代码,结果将是:索引 -1 处的输入是:0。 但是,如果我们使用以下方法:

vector<int> input = {1, 2, 3, 4, 17, 117, 517, 997};
cout<< "input vector at index -1 is: " << input.at(-1) <<endl;

结果是: 索引 -1 处的输入是:libc++abi.dylib:以 std::out_of_range 类型的未捕获异常终止: vector 。

谁能给我解释一下原因吗?谢谢。

最佳答案

at 成员进行范围检查并做出适当的响应。

operator [] 没有。这是未定义的行为,是代码中的错误。

这在文档中有明确说明。

关于c++ - 通过 operator[] 和 .at() 访问 vector 的负索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41157092/

相关文章:

c++ - 我怎样才能在后台运行一个软件而不显示任何窗口使用 C++

C++11 initializer_list 错误

c++ - 在派生模板类中重新实现基类的虚函数

C++ 多行字符串未按预期工作

c++ - 什么被认为是 C++ 中的语句?

c++ - 泛化编译时和运行时评估

c++ - 迭代并从 Vector 中删除元素。错误 :Vector iterator not Incrementable

python - 如何绘制 3D 矢量场?

matlab - 在matlab中定义向量的动态增量步骤

c++ - 2 uint32_t 之间的数学运算返回 uint64_t