今天看完了這一章,主要講了string類,vector容器,迭代器,和bitset類的特點,操作和一些值得注意的地方,string和vector相對於c語言來說更傾向整體的操作,用慣了char型別和陣列和指標對於類的操作一下顯得有點不適應。下面總結這幾個類得一些要注意的地方。
一.string型別;
1.string的size操作返回的是string::size_type型別,不要把size返回值賦給int變數,因為string::size_type是unsigned型的,而int是signed型的所以size_type是int儲存長度的兩倍,賦給int變數可能會丟失精度。
2.運用string的+操作符時候,左右運算元必須至少有乙個是string型別的。例如string s="hello"+" world!"是錯誤的,兩個沒有乙個是string型別的。
二.vector
1.使用size_type型別時,vector型別總包括vector的元素型別,例如vector::size_type.
2.必須是與存在的元素才能用下標操作符進行索引,通過下標操作進行賦值時,不會新增任何元素,例如:
vectorivec;
for(vector::size_type ix=0;ix!=10;ix++)
ivec[ix]=ix;//錯誤的 ,下標只能用於已經存在的物件。
正確做法應該是定義時候用vectorivec[10] ,但這樣很笨拙,最靈活的是用ivec.push_back(ix);這樣不用一開始規定物件的大小。
三.迭代器
1.注意,vector::iterator iter=ivec.end()返回的是vector的末端元素的下乙個 而不是 最後的那個元素。
2.const_iterator與const的iterator的區別,簡單來說就是const的iteratror當初始化指向了某個vector的元素的時候,他就再也不能指向其他的元素了,但可以修改被他指向的那個元素。而const_iterator可以訪問和讀取不同的元素。但是不能修改元素的值。
3.迭代器的算術操作有iter+n,iter-n,iter1-iter2.對於最後乙個操作是計算兩個迭代器物件的距離,返回值是difference_type的signed型別。但是沒有兩個迭代器相加的操作例如iter1+iter2.
四.bitset
1.用string物件初始化bitset物件的讀入的順序是從右向左的。
2.bitset的count函式返回值型別是size_t的unsigned型別。size_t的定義在標頭檔案cstddef中。
第三章 標準庫型別
幾種初始化string類的方法 string型別的輸入操作符 int main void return 0 int main void return 0 bitset 32 bitvec 給出的長度必須是常量表示式,而且是整型。bitsetb u b是unsigned long型u的乙個副本 bit...
第三章 標準庫型別
3.1 命名空間的using宣告 通常,在標頭檔案中只定義卻是需要的東西,如只用到std cout,就應該只定義這個,不要把所有的都給定義出來。3.2 標準庫string型別 1 string物件的定義和初始化 為了與c相容,字串字面值與標準庫string型別不是同一種型別,程式設計時一定要注意區分...
第三章標準庫型別
1.命名空間using宣告 using std string 就能使用string,必須引入標頭檔案 更便捷的使用方法 using namespace std 2.標準庫string 型別 物件定義和初始化 string s1 空串 string s2 s1 將s2初始化為s1的乙個副本 strin...