訪問字符串中的字符
可以使用[]或者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