| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 31 | 1 | 2 | |||
3 | 4 | 5 | 6 | 7 | 8 | 9 | |||
10 | 11 | 12 | 13 | 14 | 15 | 16 | |||
17 | 18 | 19 | 20 | 21 | 22 | 23 | |||
24 | 25 | 26 | 27 | 28 | 29 | 30 | |||
31 | 1 | 2 | 3 | 4 | 5 | 6 |
順序容器的比較
插入|刪除位置
/效率
|
頭部
|
中間
|
尾部
|
隨機訪問
|
vector
|
低
|
低
|
高
|
Yes
|
list
|
高
|
高
|
高
|
No
|
deque
|
高
|
低
|
高
|
Yes
|
創建對象的幾種方式的效率比較
這里以string類為例:
1、string str1 = "";
2、string str2 = string();
3、string str3;
第一種方式:調用string類接受字符串形參的構造函數,創建一個臨時對象。
然后調用復制構造函數用該對象初始化str1。
第二種方式:調用string類的默認構造函數,創建一個臨時對象。
然后調用復制構造函數用該對象初始化str2。
第三種方式:直接調用string類的默認構造函數初始化str3。
創建臨時對象的代價是高的。
因此創建對象應盡量不要使用會創建臨時對象的初始化方式。
在使用類時也盡量不要創建臨時對象。
包含以下成員的類的構造函數必須使用初始化推薦一款快速編輯C++代碼的插件Visual Assist。
它能自動識別各種關鍵字,系統函數,成員變量,
自動給出輸入提示,自動更正大小寫錯誤,
自動標示錯誤,等等等等。
用了它,你寫代碼的速度一定大大提高。
Once in a time...
看到一段代碼:
char *p1,*p2;
//something
if(p1!=0)strcpy(p2,p1);
奇怪,指針怎么能夠和0相比呢?
N days later...
一個有效的指針有三種狀態:
一、保存一個特定對象的地址。
二、指向某個對象后面的另一對象。
三、值為0,表明它不指向任何對象。
if(p1!=0)strcpy(p2,p1);
<=>
if(p1!=NULL)strcpy(p2,p1);// 這種形式更易理解。
NULL 是在 cstdlib 頭文件中定義的變量,值為0.