性質:容器中元素的順序與加入的位置相對應,為使用者提供了控制元素儲存和訪問順序的能力。
六大順序容器
名稱功能
特點》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 標號 是實現段內近轉...