C++ 双端队列(deque)的使用
生活随笔
收集整理的這篇文章主要介紹了
C++ 双端队列(deque)的使用
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?雙端隊(duì)列(deque)是什么
雙端隊(duì)列(deque)是一種隨機(jī)訪問(wèn)的數(shù)據(jù)類型,提供了在序列兩端快速插入和刪除的功能,deque類似于vector,
?雙端隊(duì)列(deque)屬于STL(Standard Template Library, 標(biāo)準(zhǔn)模板庫(kù))所以使用的也是也是需要先引入: #include?<deque>
?雙端隊(duì)列(deque)的初始化
#include <iostream>
#include <string>
using namespace std;
#include <deque>int main()
{// 創(chuàng)建一個(gè)空的雙端隊(duì)列deque<int> a;cout << a.size() << endl;// 創(chuàng)建一個(gè)10個(gè)元素對(duì)象deque<int> b(10);// 創(chuàng)建5個(gè)元素且5個(gè)元素都為明天cout << b.size() << endl;deque<string> c(5, "明天");for (int i = 0; i < b.size(); i++){cout << c[i] << endl;}return 0;
}
雙端隊(duì)列(deque)與向量(vector)比較
雙端隊(duì)列(deque)與向量(vector)多了可在兩端進(jìn)行push、pop但是缺點(diǎn)是占用內(nèi)存多
? ? ?(1)如果你需要高效的隨即存取,而不在乎插入和刪除的效率,使用vector
? ? ?(2)如果你需要大量的插入和刪除,而不關(guān)心隨機(jī)存取,則應(yīng)使用list
? ? ?(3)如果你需要隨機(jī)存取,而且關(guān)心兩端數(shù)據(jù)的插入和刪除,則應(yīng)使用deque
雙端隊(duì)列(deque)方法說(shuō)明
| 函數(shù) | 說(shuō)明 |
| assign(first,last) | 用迭代器first和last所在元素替換雙端隊(duì)列元素 |
| assign(num,val) | 用val的num個(gè)副本替換雙端隊(duì)列元素 |
| at(n) | 返回雙端隊(duì)列中第n個(gè)位置元素的值 |
| begin | 雙端隊(duì)列中第一個(gè)元素的引用 |
| back | 雙端隊(duì)列中最后一個(gè)元素的引用 |
| size | 返回雙端隊(duì)列的個(gè)數(shù) |
| front | 獲取雙端隊(duì)列中第一個(gè)元素 |
| end | 獲取雙端隊(duì)列中最后一個(gè)元素 |
| empty | 判斷雙端隊(duì)列是否為空,為空返回true |
| clear | 清空雙端隊(duì)列元素 |
| pop_back | 刪除雙端隊(duì)列中最后一個(gè)元素 |
| pop_front | 刪除雙端隊(duì)列中第一個(gè)元素 |
| rbegin | 返回一個(gè)反向迭代器,指向雙端隊(duì)列末尾元素之后 |
| rend | 返回一個(gè)反向迭代器,指向雙端隊(duì)列起始元素 |
| erase(i) | 刪除第i位置的元素(注意不能直接為數(shù)組,需要用begin或者end) |
| erase(start,end) | 刪除指定的元素返回,注意是前包含后不包含,里面不能是數(shù)字 |
| insert(i,x) | 把 i 插入到x位置 |
| insert(i,x,y) | 把 i 插入到x到y(tǒng) 的位置 |
| swap | 與另一個(gè)vector交換數(shù)據(jù) |
demo 練習(xí)
#include <iostream>
#include <string>
using namespace std;
#include <deque>int main()
{// 聲明一個(gè)string 類型的dequedeque<string> ve;// 獲取默認(rèn)deque的sizecout << ve.size() << endl;//在末尾位置添加元素ve.push_back("趙");ve.push_back("錢");ve.push_back("孫");ve.push_back("李");// 獲取deque的sizecout << ve.size() << endl;// 開(kāi)始的位置插入元素ve.insert(ve.begin(),"百家姓:");// 結(jié)束的位置插入元素ve.insert(ve.end(),"ok");//刪除指定的元素返回,注意是前包含后不包含,里面不能是數(shù)字,// ve.erase(ve.begin(),ve.begin()+2);// 刪除第二個(gè)deque元素ve.erase(ve.begin()+1);//刪除最后一個(gè)元素ve.pop_back();// for遍歷deque的元素for (int i = 0; i < ve.size(); i++){cout << ve[i] << endl; }//使用迭代器遍歷元素for(deque<string>::iterator it=ve.begin();it!=ve.end();it++){cout<<*it<<endl;}// 獲取deque第一個(gè)元素cout << ve.front() << endl;// 獲取deque最后一個(gè)元素cout << ve.back() << endl;//獲取第3個(gè)位置的元素cout << ve.at(2) << endl;// deque判空if (ve.empty()){cout << "ve為空" << endl;}else{cout << "ve不為空" << endl;}// 清空dequeve.clear();return 0;
}
總結(jié)
以上是生活随笔為你收集整理的C++ 双端队列(deque)的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 求一个qq女生12字网名!
- 下一篇: git remote 命令