菜鸟笔记
提升您的技术认知

C++ Queue(队列)

阅读 : 42

在计算机科学中,我们致力于开发各种程序。他们每个人都有自己的域和实用程序。根据程序创建的目的和环境,我们有大量数据结构可供选择。其中之一就是"队列"。在讨论这种数据类型之前,让我们看一下它的语法。

语法

template<class T, class Container = deque<T> > class queue;

成员类型

下面给出了队列成员类型的列表,并对其进行了简短描述。

会员类型 说明
value_type 指定了元素类型。
container_type 指定了底层容器类型。
size_type 它指定元素的大小范围。
reference 它是容器的引用类型。
const_reference 它是常量容器的引用类型。

函数

借助函数,可以在编程领域中使用对象或变量。队列提供了大量可以在程序中使用或嵌入的功能。相同的列表如下:

功能 说明
(构造函数) 该函数用于构造队列容器。
empty 该函数用于测试队列是否为空。如果队列为空,则该函数返回true,否则返回false。
size 该函数返回队列容器的大小,它是对队列中存储的元素数量的度量。
front 该函数用于访问队列的前部元素。该元素起着非常重要的作用,因为所有删除操作都是在最前面的元素上进行的。
back 该函数用于访问队列的后部元素。该元素起着非常重要的作用,因为所有插入操作都在后部元素上进行。
push 该函数用于在队列的后端插入新元素。
pop 该函数用于删除元素;队列中的元素将从前端删除。
emplace 该函数用于在当前后元素上方的队列中插入新元素。
swap 此函数用于交换引用中两个容器的内容。
关系运算符 非成员函数指定队列所需的关系运算符。
allocator 顾名思义,非成员函数将分配器用于队列。

示例: 展示基本队列功能用法的简单程序。

#include <iostream>
#include <queue>
using namespace std;
void showsg(queue <int> sg)
{
  queue <int> ss = sg;
  while (!ss.empty())
  {
    cout << '\t' << ss.front();
    ss.pop();
  }
  cout << '\n';
}
int main()
{
  queue <int> fquiz;
  fquiz.push(10);
  fquiz.push(20);
  fquiz.push(30);
  cout << "The queue fquiz is : ";
  showsg(fquiz);
  cout << "\nfquiz.size() : " << fquiz.size();
  cout << "\nfquiz.front() : " << fquiz.front();
  cout << "\nfquiz.back() : " << fquiz.back();
  cout << "\nfquiz.pop() : ";
  fquiz.pop();
  showsg(fquiz);
  return 0;
}

输出:

The queue fquiz is :  10  20  30
fquiz.size() : 3
fquiz.front() : 10
fquiz.back() : 30
fquiz.pop() :   20  30