日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

C++ 双端队列(deque)的使用

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。