1、當用兩個迭代器初始化string類型時,如:string str(str1.begin(),str1.begin()+5),實際上,以上是一個前閉後開的區間,也就是說,str1,begin()+5所指向的字元並沒有被複製。
2、void * memset ( void * ptr, int value, size_t num );用value初始化ptr所指向的前num地區,一種初始化方法。
3、判斷兩個浮點數類型的變數是否相等不要用a==b形式,而應該判斷兩個數絕對值之差是否小於一個閥值。
在代碼中對浮點數據類型直接使用== 、<= 、>=、 !=等運算子進行比較都是不正確的。正確的方法應該是 將其差或和於小數進行比較 。
4、數組指標和指標數組傻傻分不清楚:int *p[],首先需要明白[]的優先順序高於*,p先和[]結合,說明其是一個數組,再和*結合,說明數組裡的變數都是指標;int (*p)[],p先和*結合,所以p是一個指標,再和[]結合,說明指標指向的都是數組。
5、遇到字串,優先使用string;遇到會變的數組,優先使用vector;能用stl就不要自己寫。
6、size_t類型使用特別注意,其不可能為負,所以不要犯size_t t;while(t>=0){--t};這樣的錯誤,因為t永遠也不可能為負。
7、判斷一個整數是否為奇數,用x%2!=0,不要用x%2==1,因為x也可能為負數。
8、用完new後一定要用delete,它們和(),{},[]一樣,都是成對出現的。
9、if(t)、while(t)等等,後面省略的都是“!=0/NULL” ;true為1,false為0;a==b這種形式,相等(為真)返回的是1,不相等(為假)返回的是0;
10、STL標準模板庫是C++標準庫的一部分,C++標準庫還有HP,SGI等實現的STL版本,STL標準模板庫中的絕大部分都是在SGI中實現的;不過,在使用時不用管這麼多,STL標準庫的標頭檔是沒有副檔名的,直接包含相關標頭檔即可;STL中有很多實用的演算法,熟悉其使用可以節省很多時間,而且STL實現的版本效能肯定不會比自己寫的差到哪去。
11、 private:只能由1.該類中的函數、2.其友元函數訪問。 不能被任何其他訪問,該類的對象也不能訪問。 protected:可以被1.該類中的函數、2.子類的函數、以及3.其友元函數訪問。 但不能被該類的對象訪問。 public:可以被1.該類中的函數、2.子類的函數、3.其友元函數訪問,也可以由4.該類的對象訪問。 註:友元函數包括3種:設為友元的普通的非成員函數;設為友元的其他類的成員函數;設為友元類中的所有成員函數。