/*支持随机操作,同时双向插入和删除,
如果插入和删除,并且要求随机存取,最好用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;
}
双向结束队列的操作
原创mb64e477779bdae 博主文章分类:数据结构基础 ©著作权
文章标签 #include 随机存取 删除操作 文章分类 JavaScript 前端开发
上一篇:小递归
下一篇:hdu 1045 DFS
-
双向出口重定向
双向出口重定向
ip地址 网络拓扑 静态路由 -
双向链表的操作
双向链表的操作
链表 头结点