• STL常用容器——queue容器的使用


    STL常用容器——queue容器的使用

    1、queue容器的介绍

    queue容器简介

    queue是一种先进先出(FIFO)的数据结构,因此queue容器又称队列容器。

    queue容器有 2 个开口,其中一个开口专门用来输入元素,另一个专门用来输出元素。

    队列中只有队头和队尾才可以被外界使用,只能在队列容器的末尾添加新元素,只能从头部移除元素。

    队列中进数据称为 — 入队 push。

    队列中出数据称为 — 出队 pop。

    queue容器特点

    • queue容器内的元素进出都必须符合 “先进先出” 的策略。

    • queue容器队列顶端(队头和队尾)的元素才会被取用,因此queue容器不提供遍历功能,也不提供迭代器。

    • 最先进入 queue 的元素,也可以最先从 queue 中出来

    2、queue容器常用接口

    2.1、queue容器构造函数

    创建一个空的 queue 容器

    语法:queue q

    //创建一个int类型的queue 容器,底层采用 deque 容器的 queue 容器适配器
    queue<int> q1;
    
    • 1
    • 2

    创建指定的queue 容器

    指定queue 容器适配器底层采用的基础容器类型,可以选择 deque 和 list

    语法:queue> values

    //创建了一个使用 list 容器作为基础容器的空queue容器
    queue<int, list<int>> q2;
    
    • 1
    • 2

    注意:基础容器存储的数据类型必须和 queue 容器存储的数据类型保持一致

    用基础容器deque来创建 queue 容器

    语法:queue q{}

    deque<int> values{ 1,2,3 };
    queue<int> q3(values);
    
    • 1
    • 2

    注意:deque容器元素类型需要和 deque的容器类型相同

    拷贝构造

    语法:queue q4(const queue &que)

    deque<int> values{ 1,2,3 };
    queue<int> q3(values);
    queue<int> q4(q3);
    
    • 1
    • 2
    • 3

    2.2、queue队列容器常用的成员函数

    queue容器常用的的成员函数如下:

    成员函数功能
    empty()判断队列是否为空
    size()返回队列中的元素个数。
    front()返回队列中第一个元素。如果队列是常量,就返回一个常引用;如果队列为空,返回值是未定义的。
    back()返回队列中最后一个元素。如果队列是常量,就返回一个常引用;如果队列为空,返回值是未定义的。
    push(const T& obj)在队列的尾部添加一个元素的副本。这是通过调用底层容器的成员函数 push_back() 来完成的。
    push(T&& obj)以移动的方式在队列的尾部添加元素。这是通过调用底层容器的具有右值引用参数的成员函数 push_back() 来完成的。
    pop()移除队列中的第一个元素。

    代码实例:

    #include
    using namespace std;
    #include
    #include
    
    void test1(){
    	
    	//默认构造
    	queue<int> q1;
    
    	//list容器构造
    	queue<int, list<int>> q2;
    
    	//deque容器构造
    	deque<int> values{ 1,2,3 };
    	queue<int> q3(values);
    
    	//拷贝构造
    	queue<int> q4(q3);
    
    	for (int i = 0; i < 10; i++)
    	{
    		q2.push(i);
    	}
    	cout << "q1.size: " << q1.size() << endl;
    	cout << "q1首个元素: "<< q2.front() << endl;
    	cout << "q1末尾元素: "<< q2.back() << endl;
    
    	//遍历容器访问队列元素
    	while (!q2.empty())
    	{
    		cout << q2.front() << endl;
    		//出队
    		q2.pop();
    	}
    }
    
    int main()
    {
    	test1();
    	system("pause");
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    在这里插入图片描述

  • 相关阅读:
    QT基础教学(QT对象间的关系)
    Oracle中的用户和表空间
    单例模式(饱汉式和饿汉式)
    2023年七牛云第二届1024创作节-校园黑客马拉松
    船舶与海洋工程案例研究 | 达索系统百世慧®
    十八、字符串(3)
    富文本文案存储翻译方案
    STM32 Bootloader开发记录
    go语言基础笔记
    [附源码]计算机毕业设计JAVAjsp基于JSP的城镇住房公积金管理系统
  • 原文地址:https://blog.csdn.net/wpc2018/article/details/127429842