首页 > 试题广场 >

对于如下C++程序: int main() { vecto

[单选题]
对于如下C++程序:
int main() {
 vector<int> vInt(1);
 cout << vInt[1];
 cout << vInt.at(1);
 return 0;
}
请问两个cout语句分别会发生什么情况()
  • 抛出异常 抛出异常
  • 未定义 未定义
  • 未定义 抛出异常
  • 抛出异常 未定义
rpq头像 rpq

如果v非空,A行和B行没有任何区别。如果v为空,B行会抛出std::out_of_range异常,A行的行为未定义。

c++标准不要求vector<T>::operator[]进行下标越界检查,原因是为了效率,总是强制下标越界检查会增加程序的性能开销。设计vector是用来代替内置数组的,所以效率问题也应该考虑。不过使用operator[]就要自己承担越界风险了。

如果需要下标越界检查,请使用at。

发表于 2019-02-03 14:14:48 回复(0)