標籤:
關鍵字:標準庫類型
1、標準庫string類型中,用getline函數讀取整行文本。它只要遇到分行符號,即使它是輸入的第一個字元,getline也將停止讀入並返回。getline接受兩個參數:一個輸入資料流對象,一個string對象。如下:
int main()
{
string line;
while(getline(cin,line))
{
cout<<line<<endl;
}
return 0;
}
2、任何儲存string操作結果的變數必須為string::size_type類型。特別重要的是,不要把size的傳回值賦值給一個int變數。這是因為size_type能儲存的string長度是int所能儲存的兩倍。如下所示:
#include <iostream>
#include <string>
using namespace::std;
int main()
{
string str("Hello World!\n");
string::size_type n=str.size();
cout << "The size of "<<endl << str << "is " << n<< endl;
for(string::size_type ix=0; ix!=str.size(); ++ix)
str[ix]!=‘*‘;
cin.get();
return 0;
}
vector的情況與之類似,如下:
vector<int> a;
...
vector<int>::size_type n=a.size();
3、當進行string 對象和字串字面值混合串連操作時,+操作符的左右運算元必須至少有一個是string 類型的。如下所示:
string s1="hello";
string s2="world";
string s3=s1+", "; //ok
string s4="hello"+"world"; //error
4、C++程式員習慣於優先選用!=而不是<來編寫迴圈判斷條件。
5、對於vector來說,必須是已經存在的元素才能用下標操作符進行索引。
6、標準庫容器的iterator迭代器中,end操作指向末端元素的下一個,並不指向任何實際的元素,僅僅起到哨兵的作用。
7、採用“*操作符”來訪問迭代器所指向的元素。如果迭代器指向容器的第一個元素,那麼*iter和n[0] 指向的是同一個元素。
8、const_iterator相比一般的迭代器而言,只能用於讀取容器內的元素,而不能改變其值。
9、迭代器相減,如“iter1-iter2”,用來計算兩個迭代器對象的距離,該距離是名為difference_type的signed類型的值。
10、任何改變vector長度的操作都會使已存在的迭代器失效。
11、bitset類用於處理二進位位的有序集。
筆記:《C++ Primer》第3章