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