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

    std::vector<int> a;
    std::cout<

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

    std::vector<int> a;
//    std::cout<
    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比较安全.

你可能感兴趣的:(C++)