我的c 筆記 2

2021-06-18 07:14:29 字數 1306 閱讀 6605

1. 普通引用繫結到const物件是非法的,

如   const int i = 1024;

int &r = i;//錯誤。應為const int & r = i;

2.const引用可以初始化為不同型別的物件或者初始化為右值,如字面值常量:int i = 42; const int &r = 42; const int &r2 = r + 1;

同樣的初始化對於非const引用是不合法的,而且會導致編譯錯誤。

3.列舉型別可以像類一樣定義和初始化列舉變數。列舉型別的物件只能通過其列舉成員或是同意列舉型別的其他物件來進行初始化或是賦值。

4.getline對空白符的處理:不忽略行開頭的空白字元,讀取字元直至遇到換行符,讀取終止並丟棄換行符,

5. getline函式將istream引數作為返回值,和輸入操作符一樣,也可以把它當作判斷條件,如:

int main()

string line;

while(getline(cin, line))

cout6. string 物件可以和字串字面值混合連線,當進行string物件和字串字面值混合連線操作時,+ 操作符的左右運算元必須至少有乙個是string型別。

7. 關於容器vector:vector不是一種資料型別,而只是乙個類模板,可以用來定義任意多種資料型別。vector型別的每一種都指定了其儲存元素的型別。因此vector和 vector都是資料型別。

8. vector物件的重要性就在於可以在執行時高效地新增元素,因為vector增長的效率高,在元素值已知的情況下,最好動態的新增元素。

9. vector的 下標操作不增加元素:

初學 c++ 的程式設計師可能會認為 vector 的下標操作可以新增元素,其實不然:

vectorivec;   // empty vector
for (vector::size_type ix = 0; ix != 10; ++ix)
ivec[ix] = ix; // disaster: ivec has no elements

上述程式試圖在ivec 中插入 10 個新元素,元素值依次為 0 到9 的整數。但是,這裡 ivec是空的vector 物件,而且下標只能用於獲取已存在的元素。

這個迴圈的正確寫法應該是:

for (vector::size_type ix = 0; ix != 10; ++ix)
ivec.push_back(ix);  // ok: adds new element with value ix

10. 

必須是已存在的元素才能使用下標操作符進行索引,通過下表操作符索引時不會新增任何元素。

我的演算法筆記2

位元組筆試 自動機解決單詞糾錯 最長不重複子串 abacd 結果為4 重複 s 不重複 e s指標和e指標,cursum表示當前子陣列 result是子陣列長度,start是視窗的左端,cursum是當前區間和,for if result i start 1 result i start 1 當前結...

我的C 筆記

1,map的key值是不能重複的,char 比較的是位址,所以認為key值相同,所以你只能插入乙個元素 若要用char 做key,需要過載操作符 t1,t2 也就是map的第三個引數,當然你用std string做key的話,可以不用過載這個操作符。2,char轉int char a 1 int b...

我的C 筆記

1,map的key值是不能重複的,char 比較的是位址,所以認為key值相同,所以你只能插入乙個元素 若要用char 做key,需要過載操作符 t1,t2 也就是map的第三個引數,當然你用std string做key的話,可以不用過載這個操作符。2,char轉int char a 1 int b...