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


 

访问字符串中的字符

可以使用[]或者at()方法来访问字符串中的字符,起始索引是0.最大有效索引是string.length()-1.(特别的,如果是const string类型的对象,那么最大有效索引是string.length(),最后一个字符是'\0’.)

[]和at()的区别在于[]不检查索引是否有效,而at()在遇到无效索引时会抛出out_of_range异常.

    1
    2

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

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

    1
    2
    3
    4

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

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

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

原文链接:https://blog.csdn.net/yxccc_914/article/details/54846003


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM