C++ primer學習記錄(我的猜測未測試版本)

學習版本:第五版。linux

本博文主要記錄我的曾經並不知曉知識細節。c++

由於linux下的編譯環境還未進行學習。因此實際代碼測試將在從此完成。程序員

紅色:需確認。算法

藍色:重點。數組

 

1)const對象設定爲僅在文件內有效。我的認爲:.h .cpp屬於同文件的概念(未測試)。函數

2)constexpr:常量表達式標示符。使用此做爲前/後綴時,表示此變量/函數爲常量表達式。但,具體用途?以及爲什麼須要這樣的標示符?學習

3)但凡使用迭代器的循環,都不要向迭代器增長元素。由於增長元素可能致使容器從新分配內存,致使後續迭代器操做 可能 不按照邏輯執行。測試

4)迭代器循環中,可使用刪除(earse)操做。但須要注意迭代器執行狀況。在可能狀況下,儘可能不對迭代器循環進行修改。優化

5)auto未c++ 11新添加內容。須要肯定是否好用和代碼可讀性等等問題。spa

6)數組的初始化必須是常量表達式。例子:unsinged cnt = 42; string bad[cnt];  //錯誤,cnt不是常量表達式。

7)不容許對數組進行賦值或者copy。(應該是指對數組指針,而不是數組內容。)

8)在遞增前的數據不須要時,儘可能使用前置版本( ++i )。由於後置版本須要儲存原數據(編譯器一般不優化)。也適用於遞減版本。

9)位運算不要在有符號數據中使用。容易產生結果不肯定問題。

10)sizeof運算符三種狀況:p是指針,array_p是數組。

  1,sizeof( p );   //指針大小。

  2,sizeof( *p );  //指針指向的對象大小。

  3,sizeof( array_p );    //數組所佔用的內存大小。

  注意:數組是一個比較例外的狀況。

11)const_cast能夠在 const 和 非const之間進行轉換。

12)在while條件部分生成的迭代器每次循環也會被註銷(開始時也會建立)。

13)泛型算法不依賴容器(不會執行容器操做),但依賴迭代器操做。

14)使用泛型算法前,程序員須要保證 容器能夠接受算法要求。例:容器大小(算法fill)。

15)須要進一步瞭解常函數特性。

相關文章
相關標籤/搜索