STL的Deque介绍ITeye - 乐橙lc8

STL的Deque介绍ITeye

2019年02月28日14时25分30秒 | 作者: 惜蕊 | 标签: 元素,运用,目标 | 浏览: 2372

Deque是双端行列,在画动态图表的时分运用起来比较便利。由于当数据填满图表后,需求从行列的后方刺进一个元素,然后再从行列的前方删去一个元素。运用Deque能够很便利的做到。运用push(pop)-back(front)就ok了

下面摘录了一个Deque的运用教程

 

/*deque: 是一个double-ended queue,
 1)支撑随即存取,也就是[]操作符,
 2)支撑两头操作,push(pop)-back(front),在两头操作上与list功率差不多
 因此在实际运用时,怎么挑选这三个容器中哪一个,应根据你的需求而定,一般应遵从下面的准则: 
 1、假如你需求高效的随即存取,而不在乎刺进和删去的功率,运用vector 
 2、假如你需求很多的刺进和删去,而不关怀随即存取,则应运用list 
 3、假如你需求随即存取,并且关怀两头数据的刺进和删去,则应运用deque。
#include iostream 
#include deque 
using namespace std;
void printDeque(deque int d)
//运用下标
//for (unsigned int i = 0; i d.size(); i++)
// cout "d[" i "] = " d[i] ", ";
//运用迭代器
//deque int ::iterator iter = d.begin();
//for (;iter != d.end(); iter ++)
// cout "d[" iter-d.begin() "] = " (*iter) ", ";
//运用迭代器指针
deque int ::iterator *pIter = new deque int ::iterator;
if ( NULL  pIter )
 return ;
for (*pIter = d.begin(); *pIter != d.end(); (*pIter)++)
 cout "d[" *pIter - d.begin() "]=" **pIter ", ";
if (NULL != pIter)
 delete pIter;
 pIter = NULL;
cout endl;
void main()
//创立deque
deque int //创立一个没有任何元素的deque目标
deque int d2(10);//创立一个具有10个元素的deque目标,每个元素值为默许
deque double d3(10, 5.5); //伊妹一个具有10个元素的deque目标,每个元素的初始值为5.5
deque double d4(d3); //经过复制一个deque目标的元素值, 创立一个新的deque目标
int iArray[] = {11, 13, 19, 23, 27};
deque int d5(iArray, iArray+5);//将迭代器区间[first, last)所指的元素复制到一个新创立的deque目标中
//初始化赋值:同vector相同,运用尾部刺进函数push_back()
for (int i = 1; i i++)
 d1.push_back(i*10);
//遍历元素: 1-下标方法 2-迭代器方法 反向遍历(略)
cout "printDeque(d1) : " endl;
printDeque(d1);
//元素刺进:尾部刺进用push_back(),头部刺进用push_front(),其它方位刺进用insert( pos, elem)
cout "d1.push_front(100): " endl;
d1.push_front(100);
printDeque(d1);
cout "d1.insert(d1.begin()+3, 200): " endl; //支撑随机存取(即[]操作符),所以begin()能够+3
d1.insert(d1.begin()+2,200);
printDeque(d1);
//元素删去 尾部删去用pop_back();头部删去用pop_front(); 
//恣意迭代方位或迭代区间上的元素删去用erase( pos)/erase( first, last);删去一切元素用clear();
cout "d1.pop_front(): " endl;
d1.pop_front();
printDeque(d1);
cout "d1.erase(d1.begin()+1): " endl;
d1.erase(d1.begin()+1); //删去第2个元素d1[1]
printDeque(d1);
cout "d1.erase(d1.begin(), d1.begin() + 2) = " endl;
d1.erase(d1.begin(), d1.begin() + 2);
printDeque(d1);
cout "d1.clear() :" endl;
d1.clear();
printDeque(d1);                          
			
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表乐橙lc8立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章