美文网首页
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