为什么向量中的第 -1 个索引始终为 0?

Yad*_*han -2 c++ vector std

有人能说为什么这段代码打印 0 吗?我认为它会显示一些例外情况。

int main()
{
    std::vector<int> v;
    v.push_back(8);
    cout << v[-1];
}
Run Code Online (Sandbox Code Playgroud)

eer*_*ika 6

为什么向量中的第 -1 个索引始终为 0?

它不是。程序的行为未定义。

我认为它会显示一些例外情况。

你的期望被误导了。std:vector::operator[]当索引越界时,不能保证抛出异常。

std:vector::at 确实如您所愿。

  • 应该注意的是,MSVC 标准库有一个扩展,即使对于“operator[]”也会抛出越界异常,至少在调试版本中是这样。 (5认同)