前言
雙端隊(duì)列的元素可以從兩端彈出,其限定插入和刪除操作都可以在表的兩端進(jìn)行。
相比于隊(duì)列,雙端隊(duì)列就好在允許雙端操作這里了。

Deque
定義
#include?<deque>
using?namespace?std;
//?定義一個(gè)空對(duì)象
deque<int>?deque0;
//?定義并初始化一個(gè)含有五個(gè)參數(shù)的對(duì)象
deque<int>?deque1{1,?2,?3,?4,?5};常規(guī)操作
增加元素
//插入函數(shù)
deque0.push_front(3);//頭部插入
deque0.push_back(2);//尾部插入遍歷元素
也可以用類似數(shù)組的操作,直接取值!
可以用雙向迭代器:
- 加
r就是反向,單詞應(yīng)該是reback的首字母; - 加
c就常量,單詞應(yīng)該是const的首字母。
| 成員函數(shù) | 功能 |
|---|---|
| begin() | 返回指向容器中第一個(gè)元素的正向迭代器;如果是 const 類型容器,在該函數(shù)返回的是常量正向迭代器。 |
| end() | 返回指向容器最后一個(gè)元素之后一個(gè)位置的正向迭代器;如果是 const 類型容器,在該函數(shù)返回的是常量正向迭代器。此函數(shù)通常和 begin() 搭配使用。 |
| rbegin() | 返回指向最后一個(gè)元素的反向迭代器;如果是 const 類型容器,在該函數(shù)返回的是常量反向迭代器。 |
| rend() | 返回指向第一個(gè)元素之前一個(gè)位置的反向迭代器。如果是 const 類型容器,在該函數(shù)返回的是常量反向迭代器。此函數(shù)通常和 rbegin() 搭配使用。 |
| cbegin() | 常量正向迭代器,不能用于修改元素。 |
| cend() | 常量正向迭代器,不能用于修改元素。 |
| crbegin() | 常量反向迭代器,不能用于修改元素。 |
| crend() | 常量反向迭代器,不能用于修改元素。 |

對(duì)象名字iter就是對(duì)應(yīng)的隨機(jī)訪問迭代器,可以支持:
- iter+=i:使得
iter往后移動(dòng) i 個(gè)元素。 - iter-=i:使得
iter往前移動(dòng) i 個(gè)元素。 - iter+i:返回
iter后面第 i 個(gè)元素的迭代器。 - iter-i:返回
iter前面第 i 個(gè)元素的迭代器。 - iter[i]:返回
iter后面第 i 個(gè)元素的引用。
//查詢
if?(!deque1.empty())?{?//若true,則deque中無元素
????//順序遍歷,跟數(shù)組一樣可以直接取值!
????for?(int?i?=?0;?i?<?deque1.size();?i++)
????????cout?<<?deque1[i]?<<?"?";
????cout?<<?endl;
????//正向迭代器遍歷
????for?(deque<int>::iterator?iter?=?deque1.begin();?iter?!=?deque1.end();?iter++)
????????cout?<<?*iter?<<?"?";
????cout?<<?endl;
????//反向迭代器遍歷
????for?(deque<int>::reverse_iterator?iter?=?deque1.rbegin();?iter?!=?deque1.rend();?iter++)
????????cout?<<?*iter?<<?"?";
????cout?<<?endl;
}如果臨時(shí)記不住指針的類型,可以用auto關(guān)鍵字代替!
刪除元素
//刪除函數(shù),無返回值
?deque0.pop_front();//去頭
?deque0.pop_back();//去尾
?deque0.clear();//清空元素個(gè)數(shù)
int?size?=?deque0.size();排序
#include?<algorithm>
using?namespace?std;
//利用算法實(shí)現(xiàn)對(duì)deque容器進(jìn)行排序
sort(deque0.begin(),deque0.end());對(duì)于自定義的類型,則需要重載operator< 和operator==,然后重新調(diào)用該算法就可以了。具體例子在其他文章中,不在此復(fù)述。
感謝
感謝現(xiàn)在努力的自己。
感謝現(xiàn)在的好奇,為了能成為更好的自己。
deque容器迭代器用法詳解