C++,std::queue 详解
创作时间:
作者:
@小白创作中心
C++,std::queue 详解
引用
CSDN
1.
https://m.blog.csdn.net/Allen_Spring/article/details/141086755
1. 概述
std::queue
是 C++ 标准模板库(STL)中的一个容器适配器,它提供了一种先进先出(FIFO)的数据结构。std::queue
通常被用于存储元素集合,并且只允许在尾部添加新元素(push),在头部移除元素(pop)。这种特性使得 std::queue
成为实现队列行为的理想选择。
2. 包含头文件
要使用 std::queue
,首先需要包含对应的头文件:
#include <queue>
3. 基本操作
3.1 构造函数
queue()
: 默认构造函数,创建一个空的队列。queue(const queue& other)
: 拷贝构造函数,创建一个与other
相同的队列。
3.2 赋值操作
queue& operator=(const queue& other)
: 赋值操作符,将other
的内容赋值给当前队列。
3.3 成员函数
bool empty() const
: 如果队列为空,则返回true
;否则返回false
。size_type size() const
: 返回队列中元素的数量。void push(const value_type& val)
: 在队列尾部添加一个元素val
。注意,对于 C++11 及更高版本,也支持右值引用版本的push
(void push(value_type&& val)
),这可以优化移动语义。void pop()
: 移除队列头部的元素。如果队列为空,则行为未定义(通常是崩溃)。value_type& front()
: 返回队列头部的元素的引用。如果队列为空,则行为未定义。const value_type& front() const
: 返回队列头部的元素的常量引用。如果队列为空,则行为未定义。value_type& back()
: 返回队列尾部的元素的引用。如果队列为空,则行为未定义。const value_type& back() const
: 返回队列尾部的元素的常量引用。如果队列为空,则行为未定义。
4. 迭代器
std::queue
不提供迭代器支持,因为它被设计为仅通过其接口(如 front()
、back()
、push()
、pop()
)来访问元素。如果你需要迭代访问元素,可能需要考虑使用 std::deque
或 std::list
作为底层容器(通过模板参数指定给 std::queue
),但这将破坏 std::queue
提供的抽象和封装。
5. 示例
#include <iostream>
#include <queue>
int main() {
std::queue<int> myQueue;
// 向队列中添加元素
myQueue.push(10);
myQueue.push(20);
// 访问队列头部的元素
std::cout << "Front element is " << myQueue.front() << std::endl;
// 移除队列头部的元素
myQueue.pop();
// 访问新的队列头部的元素
std::cout << "New front element is " << myQueue.front() << std::endl;
// 检查队列是否为空
if (myQueue.empty()) {
std::cout << "Queue is empty." << std::endl;
} else {
std::cout << "Queue is not empty." << std::endl;
}
return 0;
}
6. 注意事项
- 使用
std::queue
时,必须确保不会在队列为空时调用front()
、back()
或pop()
,这会导致未定义行为(通常是程序崩溃)。 - 虽然
std::queue
通常与std::deque
一起使用作为底层容器(因为它是默认选择),但你也可以通过模板参数指定其他容器类型,如std::list
。然而,这可能会影响性能。 std::queue
不提供迭代器,因为其主要设计目标是提供一个简单的队列接口,而不是通用的容器接口。
热门推荐
如何计算项目所需的服务器配置大小与费用
6G近场通信应用场景(下)
SCI到底是什么?全面解析学术界的“黄金标准”
三角梅修剪后,迟迟不长新枝?原来是这“4点”没有做到位
为什么有的孩子没朋友?培养孩子的社交能力,这5件事很关键
《恨海》主要内容简介及鉴赏
成交量和换手率这两个指标,可是真金白银堆出来的。
考试日期发布 考试大纲调整...2025年5月IB大考该怎么准备?
2024年中国酒类进出口数据:出口增长5.95%,进口下降6.16%
骨化三醇、阿法骨化醇、艾地骨化醇,怎么选择?
2025上海长江半马即将开赛,这些马拉松术语你得懂!
运动减肥效果不佳?揭秘人体能量补偿机制
如何选择蓝筹股进行投资?这种选择标准有哪些实际意义?
揭秘4S店车窗膜真相 到底是福利还是套路?
文化出海丨“文化+数字”亮点纷呈,杭州影视产业内容推介会成功举办
如何选择合适的马桶类型?这种类型的马桶有什么特点和适用场景?
碎片时间变知识金矿:职场人都在偷学的5步高效阅读法
日本留学生生育补贴政策详解:国家补贴+地方补助,最高可达60万日元
黑燕麦片和白燕麦片哪个好?
货款费用包含哪些方面?这些费用如何影响交易成本?
网络工程师个人简历项目经验范文(5篇)
让消费者吃到正宗汉南甜玉米,检察履职促地理标志商标保护
开源跨平台大模型工具Ollama的安全隐患及应对策略
燕尾服:礼仪和风格完整指南
打破纪录!中国科学家让薛定谔的猫活了23分钟
用声过度怎么养喉咙(用嗓过度声音变了)
烘干机自清洁是黑科技还是智商税?三年实测揭开真相
滚筒烘干机的全面清洁指南
右边肩胛骨处后背疼痛的原因及日常注意事项
留学美国密歇根大学需要花费多少