c++双向队列的使用

10 篇文章 2 订阅

首先我们先简单说明c++的双向队列

c++的双向队列比队列具有更加灵活的特性,可以对队列中两端的元素进行操作。

包含文件为    #include<deque>

声明为:        deque<type> d;     type为声明的变量类型,其中d为声明的变量名

常见的操作有以下几种方式:

push_back:    从尾部添加元素

push_front:     从头部添加元素

pop_back:       从尾部删除元素

pop_front:       从头部删除元素

insert:              插入一个元素

erase               删除一个元素

更加具体的函数可以参考c++的官方网站对于deque的说明:

http://www.cplusplus.com/reference/deque/deque/?kw=deque


下面我们来看一下这里例子,这里具体的说明如何使用上面的函数,程序里具体说明了每一步的解释:

#include<iostream>
#include<deque>
using namespace std;

int main()
{
	deque<int> d;
	//从尾部插入0到4
	for (int i = 0; i < 5; i++)
	{
		d.push_back(i);
		cout << i << " ";
	}
	//从头部插入20到16
	for (int i = 20; i>15; i--)
	{
		d.push_front(i);
		cout << i << " ";
	}
	cout << endl;
	//现在双向队列中按从头到位的顺序为16 17 18 19 20 0 1 2 3 4
	//输出双向队列中的所有元素
	cout << "按照一头一尾的方式输出双向队列中的所有元素" << endl;
	//正确的输出结果应该是16 4 17 3 18 2 19 1 20 0
	while (!d.empty())
	{
		cout << d.front() << " ";
		d.pop_front();
		cout << d.back() << " ";
		d.pop_back();
	}
	cout<<endl;
	deque<int>::iterator it = d.begin();
	//删除了所有元素以后我们重新对双向队列赋值
	for (int i = 0; i < 10; i++)
	{
		d.push_back(i);
	}
	//输出现在队列中的元素
	for (it = d.begin(); it != d.end(); it++)
	{
		cout <<*it << " ";
	}
	cout << endl;
	//接下来我们演示在第3个元素中插入5个10,然后删除倒数第2个元素
	
	it = d.begin();//让it指向第三个元素
	d.insert(it+2,5,10);//这里的5代表插入的元素个数
	it = d.end();
	d.erase(it - 2);//删除倒数第二个元素
	//查看现在双向队列中的元素
	for (it = d.begin(); it != d.end(); it++)
	{
		cout <<*it << " ";
	}

	system("pause");
	return 0;
}

下面是对应的输出截图:

  • 10
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值