C++ primer 筆記二
第3章 標準庫類型
1.不論什麽存儲string的size操作結果的變量類型必須為string::size_type類型。
2.同理存儲vector的size值應使用類似vector<string>::size_type的類型變量
3.使用for(vector<int>::size_type ix=0; ix != ivec.size(); ++ix)的風格 a.使用!=的效率更高 b.在循環過程中可能ivec的元素個數會變化,所以每次比較ivec.size()是一種更合理的做法 以。 c.C++有非常多小函數都是內聯函數,所以多次調用ivec.size()產生的效率代價是非常小的
4.多認識了一個const叠代器:vector<int>::const_iterator,與vector<int>::iterator極像。僅僅是不能對得到的指針指向的對象進行改動。
5.兩個叠代器相減(iter1-iter2)得到兩者的距離
6.操作符::用於在其左操作數的作用域內找到其右操作數的名字。
7.size_t在cstddef頭文件裏定義的機器相關的無符號整型。該類型足以保存最大數組的長度。
第4章 數組和指針
8.未初始化的指針可能不為0。所以要盡量在聲明的地方初始化。或在將其初始化為NULL即0,方便使用前推斷是否已經初始化。
9.int &ri=ival, &ri2 = ival2; ri = r2; 結果是什麽?將ival2的值賦給ival,引用未變化。
10.在處理C風格字符串時(即char數組)永遠要記得字符串結束符為null(即‘\0‘),否則類似strlen()的結果不是確定的並且必將是錯誤的結果。包括strncpy等,但strlen的結果不包括結束符
11.使用C++標準庫類型string則不會存在C風格字符串的問題,同一時候string的效率比C風格的也高。
12.c_str()返回的數組並不一直保持有效性。當string變量的內存分配不變化時,c_str()是一直有效的,可是假設在後面的操作中string變量的長度發生變化或其它一些情況發生,因內存的又一次分配。則已經保存的string.c_str()指針就可能變化,必須又一次調用c_str()返回新的地址.
C++ primer 筆記二