deque其实和队列,栈差不多,但它可以两边都可以插入或删除元素,个人感觉用处更大一点
先把用法粘上2333:
插入篇:
尾部插入: push_back()
【头部】插入元素的函数 push_front()
提取篇:
3 bool empty() 判断 deque 容器是否已有元素,是则返回 true,否则返回 false
4 size_type size() 当前 deque 容器的元素个数
5 size_type max_size() 系统所支持的 deque 容器的最大元素个数
6 reference front() deque容器的首元素(引用返回),要求 deque 不为空
7 reference back() deque容器的末元素(引用返回),要求 deque 不为空
删除篇:
void pop_front(); 删除 deque 的第一个元素
4 2. void pop_back(); 删除 deque 的最后一个元素
5 3. iterator erase(iterator pos); 删除 pos 所指向的元素
6 4. iterator erase(iterator first, iterator last); 删除 迭代器区间 [first, last) 所指向的所有元素。
7 5. void clear(); 删除所有元素
嗯。。
用法这么多久差不多了,还用我举栗吗。。不看例子也要点个赞啊,我可是花了点时间整理的。。。;
好了。。。不废话,上栗子:
#include <iostream>
#include <cstring>
#include <deque>
#include <queue>
using namespace std;
int main()
{
deque<int > s;//这里用int举栗。。。至于结构体我的那个走迷宫的博客已经有了。。
//插入。。。。感觉。。好污。。
cout<<"插后面";
s.push_back(1); //插后面
int i,j;
for(i=0;i<s.size();++i)
cout<<s[i]<<" ";
cout<<"\n";
cout<<"插后面";
s.push_back(2); //插后面
for(i=0;i<s.size();++i)
cout<<s[i]<<" ";
cout<<"\n";
cout<<"插后面";
s.push_back(3); //插后面
for(i=0;i<s.size();++i)
cout<<s[i]<<" ";
cout<<"\n";
cout<<"插前面";
s.push_front(10); //插前面
for(i=0;i<s.size();++i)
cout<<s[i]<<" ";
cout<<"\n";
cout<<"插前面";
s.push_front(11); //插前面
for(i=0;i<s.size();++i)
cout<<s[i]<<" ";
cout<<"\n";
cout<<"插前面";
s.push_front(12); //插前面 。。感觉更污了。。
for(i=0;i<s.size();++i)
cout<<s[i]<<" ";
cout<<"\n";
//提取&&删除
cout<<"首元素";
cout<<s.front()<<endl; //读取首元素
cout<<"尾元素";
cout<<s.back()<<endl; //读取尾元素
cout<<"删除尾元素"<<endl;
s.pop_back(); //删除末元素
cout<<"首元素";
cout<<s.front()<<endl; //读取首元素
cout<<"尾元素";
cout<<s.back()<<endl; //读取尾元素
cout<<"删除首元素"<<endl;
s.pop_front(); //删除首元素
cout<<"首元素";
cout<<s.front()<<endl; //读取首元素
cout<<"尾元素";
cout<<s.back()<<endl; //读取尾元素
cout<<"长度:"<<s.size()<<endl;
cout<<"判断是否为空:"<<s.empty()<<endl;
cout<<"清空deque "<<endl;
s.clear(); //清空deque
cout<<"长度:"<<s.size()<<endl;
cout<<"判断是否为空:"<<s.empty()<<endl; //读出长度,判断是否为空
}
运行结果就是:是不是很清晰。。。这些就是基本的用法了,复杂的目前也不怎么需要。。
各位观众老爷们点个赞呗。。。