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