C primer 第九章筆記 初稿

2021-07-26 17:35:36 字數 2415 閱讀 1626

性質:容器中元素的順序與加入的位置相對應,為使用者提供了控制元素儲存和訪問順序的能力。

六大順序容器

名稱功能

特點》vector

可變大小陣列

支援快速隨機訪問,除尾部外插入、刪除較慢

deque

雙端佇列

支援快速隨機訪問,頭尾外插入刪除較慢

list

雙向列表

支援雙向順序訪問,任何位置插入刪除很快

forward_list

單項列表

支援正向順序訪問,任何位置插入刪除很快

array

固定大小陣列

支援快速隨機訪問,不能新增刪除

string

字串支援快速隨機訪問,除尾部外插入、刪除較慢

list與forward_list相較有更大的額外記憶體消耗。

array相比內建陣列更為安全。

標準庫執行效率較高,應當優先選擇標準庫而不是原式資料結構。

如果程式只要在讀取時才會向容器中間插入資料,可以設定乙個list緩衝。

型別與函式

描述iterator

迭代器const_iterator

唯讀迭代器

size_type

無符號整型,描述容器大小或迭代器位置差

difference_type

帶符號整型

value_type

元素型別

reference

元素左值型別,與value_type&相似

const_reference

const左值

c c, c c(c2), c c(b,e)

建構函式

c c建構函式

c c(n), c c(n,t)

建構函式,n為個數,t為初始值

c1=c2, c1=

賦值a.swap(b), swap(a,b)

交換c.size()

元素個數(不支援forward_list

c.max_size()

容器可儲存最多元素個數

c.empty()

確認容器是否為空

c.insert(args)

插入元素

c.emplace(inits)

構造乙個元素

c.erase(args)

刪除元素

c.clear()

清空容器

reverse_iterator

逆定址迭代器

const_reverse_iterator

唯讀逆定址迭代器

c.rbegin(), c.rend(), c.crbegin(), c.crend

返回逆定址迭代器

對於c c(b,e)的構造方法,c所宣告的容器元素型別,必須與b e的型別相容(不一定一樣,除array)。

比較運算子必須要求容器中的元素允許元素運算。

迭代器有公共的介面,forward_list不支援自減操作。

對反向迭代器使用自增,等價於正向迭代器遞減。

迭代器初始化與拷貝初始化區別

list

ls;

vector

char*> vcc;

list

ls2(ls);//正確無疑

deque

ds(ls);//錯誤,容器種類不同

vector

vs(vcc)//錯誤,容器元素型別不同

forward_listfs(vcc.begin(),vcc.end());//正確

array

賦值與交換

交換兩個array用線性時間,但是元素值改變的同時迭代器所表示的位置不變。

新增元素

push_front

insert

emplace :直接進行初始化

訪問元素

刪除元素

erase:

forward_list

注意點:一旦涉及到容器的插入刪除,不要快取迭代器(end()),應當每次使用都呼叫一次。

構造方法

其他操作

compare方法:類似於strcmp。

數值轉換:一般為sto + 型別首字母 + (s,p,b),p為第乙個非數值字元的下標,b為基數預設10。

string s="a=1";

int i=stoi(s.substr(s.find_first_of(0123456789)));

定義:接受一種已有容器,並使其有接收介面卡的操作。

定義介面卡

特徵

C primer 第九章個人筆記

個人筆記,txt備份用。不考慮排版。順序容器型別 vector 可變陣列,支援快速隨機訪問 在尾部之外的地方插入元素不方便 deque 雙端佇列,支援快速隨機訪問,在首尾部之外的地方插入刪除元素麻煩 list 雙向鍊錶 任何位置插入刪除元素快 只能雙向訪問 forward list 單向鍊錶 任何位...

c primer 筆記 第九章 順序容器

1.vector,deque,list,forward list,array,string的區別 vector 可變大小陣列,支援快速隨機訪問,在尾部之外的位置插入或刪除元素可能很慢 deque 雙端佇列,支援快速隨機訪問,在中間位置新增或刪除元素的代價可能很高,但是在兩端新增或刪除元素很快 lis...

第九章(筆記)

轉移指令是可以修改ip,或同時修改cs和ip的指令 offset 是用於提取標號偏移位址的操作符 jmp在第2章裡說到時用於修改ip或同時修改cs和ip的轉移指令,這章裡單獨的jmp指令是乙個無條件的轉移指令 jmp short 標號 是實現段內短轉移 jmp near ptr 標號 是實現段內近轉...