c++ queue(队列)使用指南

1.deque简介

queue和stack类似,是STL中的容器适配器,它们并不是容器,而是基于其他容器实现。那么什么叫容器适配器呢,大家可以想一想电源适配器,没错就是下面这个:

它能直接给手机充电吗?当然不能,那是它可以将电源转化为手机能够适应的电压。容器这里就相当于电源,容器适配器对容器的接口进行封装,以达到我们需要的要求。

queue的原理和操作十分简单,即先进先出原则,即只能从队列开头删除元素,只能从队列末尾删除元素,默认是基于deque(双端队列)实现的。使用时需要包含头文件<queue>。

既然它默认是基于deque实现,那么很容易想到,queue能实现的操作deque都能实现,事实也是如此。你可以会有疑问,既然如此,那为什么我们要用queue,而不是直接使用deque?在很多情况下,我们使用queue,就是为了告诉自己或别人,这是一个队列,防止熊孩子们的误操作,把多余的接口删除,防止不必要的错误。就如同const关键字,其存在意义就是为了防止数据被更改。

deque不提供迭代器,不提供随机访问。

2.构造

较为简单,直接看官方文档的例子:

// constructing queues
#include <iostream>       // std::cout
#include <deque>          // std::deque
#include <list>           // std::list
#include <queue>          // std::queue

int main ()
{
  std::deque<int> mydeck (3,100);        // deque with 3 elements
  std::list<int> mylist (2,200);         // list with 2 elements

  std::queue<int> first;                 // empty queue
  std::queue<int> second (mydeck);       // queue initialized to copy of deque

  std::queue<int,std::list<int> > third; // empty queue with list as underlying container
  std::queue<int,std::list<int> > fourth (mylist);

  std::cout << "size of first: " << first.size() << '\n';
  std::cout << "size of second: " << second.size() << '\n';
  std::cout << "size of third: " << third.size() << '\n';
  std::cout << "size of fourth: " << fourth.size() << '\n';

  return 0;
}

 运行结果:

size of first: 0
size of second: 3
size of third: 0
size of fourth: 2

3.成员函数 

empty判读队列是否为空,若为空返回ture,否则返回false
size返回队列大小,返回值类型为无符号整型
front返回队列第一个元素
back返回队列最后一个元素
push向队列末尾插入元素
emplace 向队列末尾插入元素,c++11新特性,效率比push高
pop删除第一个元素
swap 交换队列

4.非成员函数

1.swap(queue1,queue2)交换两个队列,成员函数里也有swap这个函数,使用方法为queue1.swap(queue2)

2.重载了==,!=,<,>,<=,>= 比较关系符

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值