C++ 队列

C++ 队列

在计算机科学中,我们开发各种各样的程序。它们每个都有自己的领域和用途。根据程序创建的目的和环境,我们有许多可供选择的数据结构。其中之一就是“队列”。在讨论这种数据类型之前,让我们先来看一下它的语法。

语法

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

这种数据结构采用FIFO技术工作,其中FIFO代表先进先出。首先插入的元素将被首先提取,依此类推。有一个称为“front”的元素,它是最前面或者说是第一个位置的元素,还有一个称为“rear”的元素,它是最后位置的元素。在普通队列中,元素的插入在末尾进行,删除则从前面进行。

在应用领域,队列被用作容器适配器。

容器应该支持以下操作:

  • empty
  • size
  • push_back
  • pop_front
  • front
  • back

模板参数

T :该参数指定容器适配器将保存的元素类型。

Container :该参数指定队列元素保存在其中的内部容器对象。

成员类型

下面是队列成员类型及其简短描述的列表。

成员类型 描述
value_type 指定元素类型。
container_type 指定底层容器类型。
size_type 指定元素的大小范围。
reference 容器的引用类型。
const_reference 常量容器的引用类型。

函数

借助函数,可以在编程领域中处理对象或变量。队列提供了许多可以在程序中使用或嵌入的函数。下面是它们的列表:

功能 描述
(构造函数) 此函数用于构造队列容器。
empty 此函数用于测试队列是否为空。如果队列为空,函数返回true,否则返回false。
size 此函数返回队列容器的大小,即存储在队列中的元素数量。
front 此函数用于访问队列的前一个元素。该元素在删除操作中起到非常重要的作用,因为所有的删除操作都是从前一个元素开始的。
back 此函数用于访问队列的后一个元素。该元素在插入操作中起到非常重要的作用,因为所有的插入操作都是在后一个元素上执行的。
push 此函数用于在队列的后端插入新元素。
pop 此函数用于删除元素;队列中的元素从前端删除。
emplace 此函数用于在当前后端元素上方插入新元素。
swap 此函数用于交换两个容器的内容。
关系运算符 此非成员函数指定队列所需的关系运算符。
using allocator<queue> 此非成员函数使用分配器对队列进行操作。

示例:一个简单的程序展示了基本队列函数的使用。

#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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程