在编程语言中怎样定义队列及其使用(C++)

队列是一种常见的数据结构,主要用于元素的存储和访问,遵循先进先出(FIFO,First In First Out)的原则。在C++编程中,定义和使用队列可以通过STL(标准模板库)提供的queue库来实现。

1. 定义并初始化队列

在代码中定义队列需要引入头文件,代码如下:

#include <queue>            //包含队列头文件 
using namespace std;

queue<int> q;               //定义一个空的int类型队列

这里定义了一个名为q的int类型队列,使用默认的构造函数创建一个空的队列。如果需要在定义时初始化队列,可以使用以下代码:

queue<int> q1({ 1, 2, 3 });     //定义并初始化整数队列
queue<string> q2({ "apple", "orange", "banana" });     //定义并初始化字符串队列

可以使用花括号“{ } ”来初始化队列,这里可以实现Int类型或字符串类型队列的初始化。

2. 插入元素到队列中

队列中主要提供两种插入元素的方法:push()和emplace()。下面分别详细讲解。

  • push()方法

push()方法用于将元素插入到队列的末尾,代码如下:

q.push(10);                   //将10插入队列q的末尾
q.push(20);                   //将20插入队列q的末尾
q.push(30);                   //将30插入队列q的末尾
q.push(40);                   //将40插入队列q的末尾
  • emplace()方法

emplace()方法用于在队列的末尾创建一个新元素,代码如下:

q.emplace(50);                 //任务元素50 到队列q的末尾

3. 遍历队列元素

遍历队列元素主要有两种方式,一种是使用循环和front()方法、pop()方法来实现,另一种是使用STL提供的算法for_each() function来实现。

  • 方法一
while (!q.empty()) {            //当队列非空时继续循环
    cout << q.front() << " ";   //输出队列的第一个元素
    q.pop();                    //从队列中删除第一个元素
}
  • for_each()函数
#include <algorithm>    //包含算法库 
void output(int i) {
    cout << i << " ";
}

for_each(q.front(), q.back(), output);

这里采用STL中的for_each()函数,从队列的首位置到队列的末位置循环执行output()函数。

4. 删除队列的元素

队列中有两种方法用于删除队列中的元素:pop()和clear()。前者从队列中删除队首元素,而后者删除队列中所有元素。

  • pop()方法
q.pop();                    //从队列中删除第一个元素
  • clear()方法
q.clear();                  //从队列q中删除所有元素

示例1

假设现在需要使用队列,按照顺序输入两个数字,依次将这两个数字加入队列,每增加一个新的数字需要输出一下队列的所有元素,如此重复执行。

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

int main() {
    queue<int> q;//定义一个int类型的空队列
    int num1 = 0, num2 = 0;//定义两个变量

    while (cin >> num1 >> num2) {//循环输入两个数字
        q.push(num1);           //将第一个数字加入队列中
        q.emplace(num2);        //将输入的第二个数字加入队列末尾
        cout << "Elements of Queue: ";

        while (!q.empty()) {    //输出队列中的所有元素
            cout << q.front() << " ";
            q.pop();
        }
        cout << "\n";
    }

    return 0;
}

示例2

假设现需要按照一定规则,依次将所有数字入队列,并输出队列中的所有偶数。

#include<iostream>
#include<queue>
#include<algorithm>        //使用for_each()函数需要包含algorithm头文件
using namespace std;

void output(int i) {       //输出所有偶数函数
    if (i % 2 == 0) {
        cout << i << " ";
    }
}

int main() {
    queue<int> q;

    for (int i = 1; i <= 10; ++i) {     //将1-10的数字入队
        q.push(i);
    }

    cout << "Elements of Queue: ";
    for_each(q.front(), q.back(), output);   //输出队列中的所有偶数
    cout << "\n";

    return 0;
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在编程语言中怎样定义队列及其使用(C++) - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Windows OpenGL ES 图像 GPUImageAmatorkaFilter

    零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录  >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录  >> OpenGL ES 特效 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录  >> OpenGL ES …

    C语言 2023年4月18日
    00
  • C语言控制进程之进程等待详解

    C语言控制进程之进程等待详解 什么是进程等待 进程等待是指程序在执行过程中,等待子进程结束并获取子进程的退出状态,以便对进程执行状态进行处理。 进程等待函数 进程等待函数是 头文件中定义的,常用的有以下两个: pid_t wait(int *status) wait()函数会等待任意一个子进程,获取子进程的退出状态并存储到status指向的整型变量中,返回结…

    C 2023年5月30日
    00
  • C语言的基本语法详解

    下面是详细讲解“C语言的基本语法详解”的完整攻略: C语言的基本语法详解 数据类型 C语言中的数据类型包括基本数据类型和构造类型,基本数据类型包括整型、浮点型、字符型、布尔型;构造类型包括数组、结构体、共用体、枚举等。 整型 整型包括有符号整型和无符号整型两种,其中有符号整型可以表示负数。 int num1 = 10; // 有符号整型 unsigned i…

    C 2023年5月22日
    00
  • 详谈Java中BigDecimal的一个除法异常

    首先,我们需要了解BigDecimal的一个常见问题,就是在进行除法计算时,会发生除不尽或除数为0的情况,导致程序抛出异常。这时候,我们需要采取一些措施来处理这些异常,确保程序的正常运行。 一、问题描述在Java中,我们可以使用BigDecimal来进行高精度计算。在进行除法计算时,如果除不尽或除数为0,会抛出ArithmeticException异常。例如…

    C 2023年5月23日
    00
  • C语言为二维数组分配连续内存

    C语言是一门高性能的编程语言,其使用广泛,特别是在计算机领域。二维数组是其重要的数据类型之一,往往要为其分配连续内存空间。本攻略将为你详细介绍C语言为二维数组分配连续内存的使用方法。 前置知识 在深入介绍二维数组分配连续内存之前,先要熟悉以下知识: 指针,指向内存地址的变量 动态内存分配,即运行时分配程序所需的内存空间的过程 二维数组分配连续内存的方法 在C…

    C 2023年5月9日
    00
  • python 深入了解GIL锁详细

    Python深入了解GIL锁 什么是GIL锁? GIL全局解释器锁(Global Interpreter Lock),是Python解释器的一种机制。在Python多线程执行的时候,由于GIL锁的存在,同一时间只有一个线程能够执行,其他的线程只能在等待队列中等待。 GIL锁的存在意义 在解释Python代码的时候,Python会将解释器内存中的字节码编译成对…

    C 2023年5月22日
    00
  • C语言 struct结构体超详细讲解

    C语言 struct 结构体超详细讲解 什么是C语言结构体? C语言中的结构体是一种自定义数据类型,可以将多个不同数据类型的变量打包成一个整体,方便程序中的数据组织和管理。 结构体的语法如下: struct 结构体名 { 数据类型1 变量名1; 数据类型2 变量名2; … 数据类型n 变量名n; }; 其中,结构体名是自定义的名称,可以根据需要进行修改。…

    C 2023年5月23日
    00
  • C++实现扫雷、排雷小游戏

    C++实现扫雷、排雷小游戏攻略 游戏介绍 扫雷是一种单人益智游戏,目标是在一个方块网格中排雷,并尽可能快的完成游戏。游戏规则如下: 在一个大小为M * N的矩阵中,有一些地雷分布在矩阵中,其他方块是空白的 玩家可以翻开其中一个空白方块,如果该方块旁边有雷,则游戏失败,否则该方块会显示周围的雷数 如果翻开的方块周围没有雷,则该方块的周围的方块也会被翻开,直到所…

    C 2023年5月24日
    00
合作推广
合作推广
分享本页
返回顶部