淺談C++STL之雙端隊(duì)列容器
概述
deque塊在頭部和尾部都可以插入和刪除。而不需要移動任何元素,而不需要移動其他元素(使用push_back()方法在尾部插入元素,會擴(kuò)張隊(duì)列,而使用push_front()方法在首部插入元素和使用insert()方法在中間插入元素,只是將原位置上的元素進(jìn)行覆蓋,不會增加新元素)一般來說,當(dāng)考慮到容器元素的內(nèi)存分配策略和操作的性能時(shí)deque相當(dāng)于vector更有優(yōu)勢。

創(chuàng)建deque對象與vector類似
插入元素
使用push_back()方法從尾部插入元素,會不斷擴(kuò)張隊(duì)列。
#include<iostream>
#include<deque>
using namespace std;
int main()
{
deque<int> d;
d.push_back(1);
d.push_back(2);
cout<<d[0]<<" : "<<d[1]<<endl;
return 0;
}
從頭部插入元素,不會增加新元素,只將原來有的元素覆蓋。
#include<iostream>
#include<deque>
using namespace std;
int main()
{
deque<int> d;
d.push_back(1);
d.push_back(2);
d.push_back(3);
d.push_front(10);//d.insert(d.begin()+1, 10);
d.push_front(20);//d.insert(d.begin()+2, 20);
cout<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;
return 0;
}
遍歷
#include<iostream>
#include<deque>
using namespace std;
int main()
{
deque<int> d;
d.push_back(1);
d.push_back(2);
d.push_back(3);
for(int i = 0; i < d.size(); i ++)
cout<<d[i]<<" ";
cout<<endl;
deque<int>::iterator it;
for(it = d.begin(); it != d.end(); it ++)
cout<<*it<<" ";
cout<<endl;
deque<int>::reverse_iterator rit;
for(rit = d.rbegin(); rit != d.rend(); rit ++)
cout<<*rit<<" ";
cout<<endl;
return 0;
}
刪除元素
可以從雙端隊(duì)列的手部,尾部,中部刪除元素,并可以清空雙端隊(duì)列容器
#include<iostream>
#include<deque>
using namespace std;
int main()
{
deque<int> d;
for(int i = 1; i < 6; i ++)
d.push_back(i);
d.pop_front();
d.pop_front();
deque<int>::iterator it;
for(it = d.begin(); it != d.end(); it ++)
cout<<*it<<" ";
cout<<endl;
d.pop_back();
for(it = d.begin(); it != d.end(); it ++)
cout<<*it<<" ";
cout<<endl;
d.erase(d.begin()+1);
for(it = d.begin(); it != d.end(); it ++)
cout<<*it<<" ";
cout<<endl;
d.clear();
cout<<d.size()<<endl;
return 0;
}
以上就是淺談C++STL之雙端隊(duì)列容器的詳細(xì)內(nèi)容,更多關(guān)于C++STL之雙端隊(duì)列容器的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C++詳細(xì)實(shí)現(xiàn)完整圖書管理功能
隨著網(wǎng)絡(luò)技術(shù)的高速發(fā)展,計(jì)算機(jī)應(yīng)用的普及,利用計(jì)算機(jī)對圖書館的日常工作進(jìn)行管理勢在必行,本篇文章涵蓋一個(gè)圖書管理系統(tǒng)的全部實(shí)現(xiàn)代碼,大家可以查缺補(bǔ)漏,提升水平2022-05-05
C++用new創(chuàng)建對象和不用new創(chuàng)建對象的區(qū)別解析
在C++用new創(chuàng)建對象和不用new創(chuàng)建對象是有區(qū)別的,不知你是否清楚的了解它們到底有什么樣的區(qū)別呢?下面小編就用示例來告訴大家吧,需要的朋友可以過來參考下2013-07-07
C/C++?Qt?StatusBar底部狀態(tài)欄應(yīng)用教程
Qt窗體中默認(rèn)會附加一個(gè)QstatusBar組件,狀態(tài)欄組件位于主窗體的最下方,其作用是提供一個(gè)工具提示功能。本文主要介紹了StatusBar底部狀態(tài)欄的應(yīng)用教程,需要的同學(xué)可以學(xué)習(xí)一下2021-12-12
C語言棧順序結(jié)構(gòu)實(shí)現(xiàn)代碼
一個(gè)能夠自動擴(kuò)容的順序結(jié)構(gòu)的棧 ArrStack 實(shí)例 (GCC編譯),有需要的朋友可以參考一下2013-10-10

