c++ stl vector 下标可以取-1么


vector下标访问有两种情况:

  • []运算符
  • at函数

[]运算符

不会进行边界检查。

不同于 std::map::operator ,此运算符不插入新元素到容器。

通过此运算符访问不存在的元素是未定义行为。

at函数

访问指定的元素,同时进行越界检查。

若 !(pos < size()) 则抛出 std::out_of_range