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.重载了==,!=,<,>,<=,>= 比较关系符

原创文章 68 获赞 367 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_40692109/article/details/105476370