双向结束队列的操作

来源:互联网 发布:64位版本的windows 编辑:程序博客网 时间:2024/05/16 08:16
/*支持随机操作,同时双向插入和删除,
如果插入和删除,并且要求随机存取,最好用deque
要求存取的用vector
要求插入和删除的用list*/
/*deque:double_end_queue*/
#include<stdio.h>
#include<deque>
#include<algorithm>
using namespace std;
int main()
{
int a[4]={0,1,2,3};
deque<int>Deque(4,4);
deque<int>D1(Deque);//复制  deque<int>c1(c2); 
D1.assign(a,a+4);//复制 c1.assign(begin,end); 
D1.assign(4,3);//复制 c1.assign(n,ele);n个ele;
deque<int>D2(a,a+4);//复制  deque<int>c(begin,end); 
deque<int>D3(4,2);//复制  deque<int>c(n,ele); 
deque<int>::iterator pos;
int i;
for(i=1;i<=4;i++)
printf("%d\n",D3[i-1]);// 进行随机存取操作 c[]; 
for(pos=D2.begin();pos!=D2.end();pos++)
printf("%d\n",*pos);// 进行迭代操作 
printf("****\n"); 
//声明 deque<int>::iterator pos,pos=c.begin pos=c.end();   
D2.push_front(11);//头部进入插入操作 
D2.push_back(100);//尾部进入插入操作 
for(pos=D2.begin();pos!=D2.end();pos++)
printf("%d\n",*pos);
D2.pop_front();//头部进行删除操作 
D2.pop_back();//尾部进行删除操作 
for(pos=D2.begin();pos!=D2.end();pos++)
printf("%d\n",*pos);
printf("%d %d\n",D2.front(),D2.back());
//头元素与 尾元素 c.front(),c.back()
//此外还有c.size(),c.empty(),c.clear(); 
printf("%d\n",D3.at(2));
//c.at()与c[]功能相同 
pos=D2.erase(D2.begin()); 
//删除函数c.erase(pos),删除POS指针,返回下一地址
//同样还有 c.erase(behin,end);删除[begin,end)指针
//返回下一地址 
printf("%d\n",*pos);
pos=D2.insert(pos,59);
printf("%d\n",*pos); 
//插入函数 c.insert(pos, ele)返回新数据地址 
//此外 还有 c.insert(pos,n,ele),c.insert(pos,begin,end);无返回值
pos=find(D2.begin(),D2.end(),59);
if(pos==D2.end())
  printf("sssss\n");
else
printf("%d\n",*pos); 
//此外还有交换函数c1.swap(c2) swap(c1,c2); 
return 0;
}
0 0
原创粉丝点击