1. 程式人生 > >C++ primer 筆記二

C++ primer 筆記二

type char popu 函數 trac art 長度 pop 無符號

第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 筆記二