首页 > 后端开发 > C++ > 正文

c++ 队列怎么用 c++ queue容器操作详解

穿越時空
发布: 2025-12-03 12:52:02
原创
880人浏览过
C++中的queue是FIFO容器适配器,需包含<queue>头文件,常用操作包括push入队、pop出队、front获取队首、back获取队尾、empty判空和size获取大小,不支持迭代器遍历,常用于BFS、任务调度等场景。

c++ 队列怎么用 c++ queue容器操作详解

C++ 中的队列(queue)是一种先进先出(FIFO, First In First Out)的数据结构,常用于需要按顺序处理元素的场景。它在 queue 头文件中定义,是 STL(标准模板库)中的容器适配器之一。下面详细介绍 C++ queue 的基本用法和常用操作。

包含头文件与定义队列

使用 queue 前必须包含对应的头文件:

// 包含 queue 头文件
#include <queue>

// 定义一个存储 int 类型的队列
std::queue<int> q;

// 也可以存储其他类型,如 string、自定义结构体等
std::queue<std::string> str_q;
std::queue<Node> node_q; // 假设 Node 是已定义的结构体

常用成员函数详解

queue 提供了几个核心操作函数,用于入队、出队、查看队首/队尾以及判断状态。

q.push(value);

将一个元素添加到队列的末尾(入队)。时间复杂度为 O(1)。

立即学习C++免费学习笔记(深入)”;

q.pop();

移除队列头部的元素(出队),但不返回值。如果要获取值,需先调用 front()。注意:调用 pop() 前应确保队列非空,否则行为未定义。

q.front();

返回队列第一个元素的引用,可用于读取或修改。访问前应确保队列不为空。

q.back();

返回队列最后一个元素的引用,即最后入队的元素。

Fotor AI Face Generator
Fotor AI Face Generator

Fotor 平台的在线 AI 头像生成器

Fotor AI Face Generator 50
查看详情 Fotor AI Face Generator
q.empty();

判断队列是否为空,返回 bool 值。推荐在 pop 或 front 操作前检查。

q.size();

返回队列中元素个数,返回类型为 size_t。

基本操作示例

以下是一个完整的小例子,展示 queue 的常见操作:

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

int main() {
queue<int> q;

// 入队操作
q.push(10);
q.push(20);
q.push(30);

cout << "队列大小: " << q.size() << endl; // 输出 3
cout << "队首元素: " << q.front() << endl; // 输出 10
cout << "队尾元素: " << q.back() << endl; // 输出 30

// 出队一个元素
q.pop();

cout << "出队后队首: " << q.front() << endl; // 输出 20

// 遍历队列(只能通过出队实现)
while (!q.empty()) {
cout << "当前队首: " << q.front() << endl;
q.pop();
}

if (q.empty()) {
cout << "队列已空" << endl;
}

return 0;
}

注意:queue 不支持迭代器,不能像 vector 那样用 for 循环直接遍历。如需遍历,只能不断 front + pop,或者使用辅助容器保存副本。

常见应用场景

queue 广泛应用于算法和实际开发中:

  • 广度优先搜索(BFS):图或树的层序遍历时使用 queue 存储待访问节点。
  • 任务调度:操作系统中任务按到达顺序处理。
  • 缓冲区管理:如消息队列、打印队列等。
  • 滑动窗口问题:配合双端队列 deque 实现高效算法。

基本上就这些。掌握 push、pop、front、back 和 empty 这几个核心操作,就能熟练使用 C++ 的 queue 容器。记住操作前判空,避免运行时错误。

以上就是c++++ 队列怎么用 c++ queue容器操作详解的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号