《C Primer》讀書筆記 第9章 順序容器

2021-07-16 23:04:03 字數 2109 閱讀 7675

順序容器型別

vector 可變大小陣列

deque 雙端佇列

list 雙向列表

forward_list 單向列表【c++11新增】

array 固定大小陣列【c++11新增】

string 與vector相似的容器,但專門用於儲存字元

順序容器選取原則:通常選用vector是最好的選擇,除非你有很好的理由選擇其他容器

容器操作

容器定義 and 初始化

c c;

c c1(c2);

c c1 = c2;

c c(b, e);構造c,將迭代器b和e指定範圍內的元素拷貝到c

c c;列表初始化c

c c = ;

c seq(n);【注意:string不適用】

c seq(n, t);

賦值與swap

c1 = c2 將c1中的元素替換為c2中的元素

c1 = 將c1中的元素替換為列表中元素

swap(c1, c2) 與c1.swap(c2)等價

seq.assign(b, e)【注意:只適用array外的順序容器,關聯容器不適用,如map】

seq.assign(i1)

seq.assign(n, t)

大小 c.size()

c.empty()

新增/刪除元素

c.insert(args) 將args中的元素拷貝進c

c.emplace(inits) 使用inits構造c中的乙個元素

c.eraze(args) 刪除args指定的元素

c.clear() 刪除c中的所有元素,返回void

獲取迭代器

c.begin() c.end()

反向容器的額外成員

reverse_iterator 按逆序定址元素的迭代器

c.rbegin() c.rend()指向c的尾元素和首元素之前位置的迭代器

迭代器範圍:[begin, end) 左閉合區間

while(begin != end)

順序容器操作

新增元素c.push_back(t)

訪問元素

c[n] 返回下標為n的元素的引用

c.at(n) 返回下標為n的元素的引用

c.back() 返回尾元素的引用

c.front() 返回首元素的引用

刪除元素

c.pop_back() 刪除尾元素

c.pop_front() 刪除首元素

c.erase(p) 刪除迭代器指定的元素

c.erase(b, e) 刪除迭代器指定的元素

c.clear() 刪除c的所有元素

改變容器大小

c.resize(n) 調整為n

c.resize(n, t) 調整為n,新增的都賦值t

額外的string操作

構造string的其他方法

string s(cp, n) s是cp執行的陣列中 前n個字元的拷貝

string s(s2, pos) s是s2的從下標pos開始的拷貝

string s(s2, pos, len) s是s2的從下標pos開始 長度為len的拷貝

子字串操作

s.substr(pos, n) n預設為s.size()-pos

string搜尋操作

s.find(args) 第一次出現

s.rfind(args) 最後一次出現

s.find_first_of(args) 第一次出現args中任何乙個字元

s.find_last_of(args) 最後一次出現args中任何乙個字元

s.find_first_not_of(args) 第一次出現不在args中任何乙個字元

s.find_last_not_of(args) 最後一次出現不在args中任何乙個字元

compare函式

數值轉換

容器介面卡

除了順序容器外,標準庫還定義了三個順序容器介面卡:stack、queue、priority_queue。

容器、迭代器、和函式都有介面卡

C primer 讀書筆記(9)

在函式宣告裡值得注意的一點是預設形參 default parameter 的宣告。預設形參即在呼叫函式時可以省略實參的形參,所以我覺得也可以翻譯成預設形參。在宣告函式時就顯式地給這些引數賦值了,如果沒有傳入實參,則直接使用預設值,如果傳入實參,就會覆蓋原來的預設值。有人可能會擔心,既然可以省略實參,...

《C Primer》讀書筆記(9)

1.運算子過載,當有的時候物件運算與正常運算子的操作意義相同時,為了 的簡潔,我們就可以使用運算子過載。比如乙個簡單的加法操作,沒有必要再寫乙個add方法,還是乙個 看著比較順眼。include stdafx.h include include using namespace std class a...

《c primer》讀書筆記9

筆記範圍 2.6節 每個程式設計師都知道,在程式執行過程中,一些情況是不可預料的,無論程式的設計看起來是多麼完善,在某個特定的環境裡同樣會出錯,但是這樣的錯誤往往會有些共同之處,比如 new的時候也許會空間不足。顯然這樣的錯誤。不能完全說是程式設計的問題,但是如果你的程式能對這些情況做出反應,那麼這...