stl队列的用法

阅读: 评论:0

stl队列的用法
STL(Standard Template Library)队列是C++标准模板库中的一种容器,常用于实现先进先出的数据结构,它包含在<queue>头文件中。队列中的元素按添加顺序排队,并按照先进先出(FIFO)的原则检索并移除。
STL队列的用法十分简单,它提供了以下几个基本操作:
1. push():将元素插入队列的末尾
2. pop():从队列的开头移除元素
3. front():返回队列的第一个元素
4. empty():判断队列是否为空
5. size():返回队列中元素的个数
下面我们通过一些例子来了解具体的应用场景和操作方法。
例1:实现一个任务队列,执行任务的线程从任务队列的开头取出任务并执行,直到任务队列为空。
```
#include <iostream>
#include <queue>
#include <thread>
#include <mutex>
#include <condition_variable>
std::queue<std::string> taskQueue;
std::mutex queueMutex;
std::condition_variable queueCv;
void taskRunner() {
    while (true) {
        std::unique_lock<std::mutex> lock(queueMutex);
        queueCv.wait(lock, []{return !pty();});
        std::string task = taskQueue.front();
        taskQueue.pop();
        lock.unlock();
        std::cout << "Executing task: " << task << std::endl;
        //
    }
}
void addTask(const std::string& task) {
    std::unique_lock<std::mutex> lock(queueMutex);
桥梁钢模
    taskQueue.push(task);
    lock.unlock();
    ify_one();
}
int main() {
    std::thread t1(taskRunner);
    std::thread t2(taskRunner);
    addTask("Task 1");
    addTask("Task 2");
    t1.join();
离心制丸机
    t2.join();
    return 0;
}
```
在这个例子中,我们使用了线程和条件变量来实现任务队列的控制,任务通过addTask()函数添加到队列中,由taskRunner()函数从队列中取出并执行,任务队列为空时线程进入等待状态,直到任务队列中有新的任务被添加。
例2:计算斐波那契数列的前n项。
```
#include <iostream>
#include <queue>
int main() {
    int n = 10;
    std::queue<int> q;
    q.push(1);
    q.push(1);
    for (int i = 2; i < n; i++) {
        int a = q.front();
自动甩干拖把        q.pop();
        int b = q.front();
        q.pop();
        std::cout << a << ' ' << b << ' ';
        q.push(b);
android智能电视
        q.push(a + b);
    }
    return 0;
}
```
在这个例子中,我们使用了队列来实现斐波那契数列的计算,初始时队列中包含前两个数,每次取出队列中的前两个数进行加法运算并将计算结果放回队列的末尾,直到计算完前n项。
总结:
STL队列是C++标准模板库中常用的容器之一,它提供了方便的封装和使用方式,可以用于实现先进先出的数据结构、任务队列、消息队列等,对于具体的使用场景,我们需要根据需求来选择合适的STL容器。
圣诞树灯

本文发布于:2023-07-18 23:13:26,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/183358.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:队列   任务   元素   使用   实现   直到   执行
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图