• C++之容器std::queue类empty、size、front、back、push、emplace、pop、swap应用总结(二百二十四)


    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

    优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

    人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

    更多原创,欢迎关注:Android系统攻城狮

    欢迎关注Android系统攻城狮

    1.前言

    本篇目的:C++之容器std::queue类empty、size、front、back、push、emplace、pop、swap应用总结。

    2.函数功能介绍

    std::queue是C++ STL(标准模板库)中提供的容器类,用于实现队列数据结构。下面是对std::queue类中一些常用的成员函数的作用解释,不包含代码示例:

    1. empty(): 返回一个布尔值,表示队列是否为空。如果队列为空,则返回true;否则,返回false。

    2. size(): 返回一个整数值,表示队列中元素的个数。

    3. front(): 返回队列头部元素的引用,但不删除该元素。如果队列为空,调用该函数将导致未定义的行为。

    4. back(): 返回队列尾部元素的引用,但不删除该元素。如果队列为空,调用该函数将导致未定义的行为。

    5. push(): 接收一个元素,并将其添加到队列的尾部。新元素被添加后,成为新的尾部元素。

    6. emplace(): 类似于push()函数,但是可以在队列中构造元素,而无需创建临时对象。

    7. pop(): 移除队列头部的元素,但不返回它的值。如果队列为空,调用该函数将导致未定义的行为。

    8. swap(): 将当前的队列与另一个队列进行交换。交换后,两个队列中的元素也会互相交换。

    这些成员函数允许您操作队列,从而实现先进先出(FIFO)的数据结构。

    3.应用实例

    <1>. empty(): 判断队列是否为空,返回一个布尔值。

    #include 
    #include 
    
    int main() {
        std::queue<int> myQueue;
        
        if (myQueue.empty()) {
            std::cout << "Queue is empty!" << std::endl;
        } else {
            std::cout << "Queue is not empty." << std::endl;
        }
        
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    注意:判断队列是否为空,返回一个布尔值。

    <2>. size(): 返回队列中元素的数量。

    #include 
    #include 
    
    int main() {
        std::queue<int> myQueue;
        
        myQueue.push(10);
        myQueue.push(20);
        myQueue.push(30);
        
        std::cout << "Queue size: " << myQueue.size() << std::endl;
        
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    注意:返回队列中元素的数量。

    <3>. front(): 返回队列的第一个元素的引用。

    #include 
    #include 
    
    int main() {
        std::queue<int> myQueue;
        
        myQueue.push(10);
        myQueue.push(20);
        
        int& firstElement = myQueue.front();
        std::cout << "First element: " << firstElement << std::endl;
        
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    注意:返回队列的第一个元素的引用。

    <4>. back(): 返回队列的最后一个元素的引用。

    #include 
    #include 
    
    int main() {
        std::queue<int> myQueue;
        
        myQueue.push(10);
        myQueue.push(20);
        
        int& lastElement = myQueue.back();
        std::cout << "Last element: " << lastElement << std::endl;
        
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    注意:返回队列的最后一个元素的引用。

    <5>. push(): 将元素添加到队列的末尾。

    #include 
    #include 
    
    int main() {
        std::queue<int> myQueue;
        
        myQueue.push(10);
        myQueue.push(20);
        
        std::cout << "Queue size: " << myQueue.size() << std::endl;
        
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    注意:将元素添加到队列的末尾。

    <6>. emplace(): 以构造函数的参数直接在队列的末尾生成一个新元素。

    #include 
    #include 
    #include 
    
    int main() {
        std::queue<std::tuple<int, double, char>> myQueue;
        
        myQueue.emplace(1, 2.3, 'a');
        
        std::cout << "Queue size: " << myQueue.size() << std::endl;
        
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    注意:构造函数的参数直接在队列的末尾生成一个新元素。

    <7>. pop(): 移除队列的第一个元素。

    #include 
    #include 
    
    int main() {
        std::queue<int> myQueue;
        
        myQueue.push(10);
        myQueue.push(20);
        
        myQueue.pop();
        
        std::cout << "New front element: " << myQueue.front() << std::endl;
        
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    注意:移除队列的第一个元素。

    <8>. swap(): 交换两个队列的元素。

    #include 
    #include 
    
    int main() {
        std::queue<int> firstQueue;
        std::queue<int> secondQueue;
        
        firstQueue.push(10);
        secondQueue.push(20);
        
        std::cout << "First queue front element: " << firstQueue.front() << std::endl;
        std::cout << "Second queue front element: " << secondQueue.front() << std::endl;
        
        firstQueue.swap(secondQueue);
        
        std::cout << "After swapping:" << std::endl;
        std::cout << "First queue front element: " << firstQueue.front() << std::endl;
        std::cout << "Second queue front element: " << secondQueue.front() << std::endl;
        
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    注意:交换两个队列的元素。

  • 相关阅读:
    【日拱一卒】如何编写测试用例(下)
    技术人员的职业发展规划的思考
    C++(20):atomic_ref原子的操作非原子变量
    FPGA刷题——存储器(RAM和FIFO的Verilog实现)
    微信一键群发超过200人的方法
    mybatis快速搭建入门
    【C++】STL —— list的基本使用
    CSS3之转换(2D转换,动画,3D转换)
    QT信号和槽的关联实现子窗口传递值给主窗口
    kaf操作命令
  • 原文地址:https://blog.csdn.net/u010164190/article/details/133055650