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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

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

發(fā)布時(shí)間:2023/11/27 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。