學習版本:第五版。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)須要進一步瞭解常函數特性。