美文网首页
vector中v[i]与v.at(i)的区别

vector中v[i]与v.at(i)的区别

作者: jazzi | 来源:发表于2017-03-15 16:35 被阅读0次

void f(vector &v)

{

 v[0];    // A

 v.at[0];  // B

}

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

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

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

相关文章

网友评论

      本文标题:vector中v[i]与v.at(i)的区别

      本文链接:https://www.haomeiwen.com/subject/ymzlnttx.html