C++双端队列类模板
双端队列(deque)是一种随机访问的数据类型,提供了在序列两端快速插入和删除操作的功能,它可以在需要的时候修改其自身的大小,主要完成标准C++数据结构中队列的功能。
创建deque双端队列的方法:
#include<deque> //调用deque头文件
...
...
deque<type>d; //定义一个deque
//deque表示声明一个双端队列,<type>表示双端的类型,d表示双端队列名。
deque对象主要成员函数说明:
只是一些常用的,其它还有很多deque函数。
函数 | 说明 |
---|---|
at(n) | 返回双端队列中第n个元素 |
begin | 返回指向双端队列第一个元素的迭代器 |
end | 返回指向双端队列最后一个元素的迭代器 |
capcity | 返回双端队列的容量 |
size | 返回双端队列的大小 |
clear | 删除双端队列中所有元素 |
erase(start,end) | 删除迭代器从start到end范围内的向量 |
erase(i) | 删除迭代器第i个元素 |
insert(i,x) | 把值x插入到由迭代器指明的第i个位置 |
insert(i,start,end) | 把迭代器从start到end范围的元素插入到指明的第i个位置 |
insert(i,n,x) | 把x的n个副本插入到由迭代器指明的第i个位置 |
push_back(x) | 将值x放到双端队列末尾 |
push_front(x) | 将值x放到双端队列首部 |
pop_back | 删除双端队列最后一个元素 |
pop_front | 删除双端队列第一个元素 |
resize(n,x) | 设置双端队列大小为n,初始值为x |
reverse | 颠倒元素的顺序 |
swap(deque) | 交换两个双端队列的内容 |
这里讲一下vector向量和deque双端队列的区别,vector向量基本不涉及push_front(x)、push_front(x)操作,你可以这样理解,因为vector向量是单向的,只对尾部操作,而deque双端队列是双向的,首部尾部都可操作。
但实际上vector使用人数更多。
关于vector向量的学习————》》C++向量类模板
deque双端队列入门应用
源代码:
#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_back(4);
d.push_back(5);
for(int i=0;i<d.size();i++)
cout<<d[i]<<" ";
cout<<endl;
d.pop_front();
d.pop_front();
for(int i=0;i<d.size();i++)
cout<<d[i]<<" ";
cout<<endl;
d[1]=8;
for(int i=0;i<d.size();i++)
cout<<d[i]<<" ";
return 0;
}
给大家做一下解释,
首先deque< int >d;定义一个双端队列,
然后通过d.push_back(x);操作不断往d的后面增加值,
添加完后d队列内的值是1 、2 、3 、4 、5,
之后通过d.pop_front();操作删除d的首部元素,
删除两次后,d变为3 、4 、5,
最后自定义d[1]=8,
最终d变为3 、8 、5 。
结果图: