c++,vector的[]和at区别

来源:互联网 发布:用php写99乘法表 编辑:程序博客网 时间:2024/09/21 06:18
    std::vector<int> a;    std::cout<<a.size();

上面输出是0.容器初始化什么都不做,大小为0;

    std::vector<int> a;//    std::cout<<a.size();    a[0]=1;    a.at(0)=1;

下标[]赋值会显示SIGSEGV段错误,越界错误.
at赋值会显示 terminate called after throwing an instance of ‘std::out_of_range’

c++标准不要求vector::operator[]进行下标越界检查,原因是为了效率,总是强制下标越界检查会增加程序的性能开销。

所以通常使用vector两种方法:
(1)知道vector的大小,初始化时就设立大小.也就是知道下标操作肯定是没有越界的.
(2)用push_back比较安全.

0 0
原创粉丝点击