C++ std::queue 容器适配器详解
创作时间:
作者:
@小白创作中心
C++ std::queue 容器适配器详解
引用
CSDN
1.
https://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不提供迭代器,因为其主要设计目标是提供一个简单的队列接口,而不是通用的容器接口。
本文原文来自CSDN
热门推荐
角色扮演+写作闯关:让写作变成一场冒险
从《绝望中的那把伞》到图书馆讲座:如何点燃孩子的写作热情
鹅黄色是什么意思及颜色特点,鹅黄色的色彩搭配与色系分析
安阳林州太行大峡谷,早春雪景美如画~
144小时!“豫”见河南四大古都
安阳中国文字博物馆:探秘中华文明,追寻汉字起源,感受文字魅力
最早的王陵规划?商王:被你们发现了,确实是精心设计的
《博鳌亚洲论坛创新报告2024》发布:亚洲在全球科技创新中地位日益凸显
血脂异常吃点啥?研究发现:3种坚果调节血脂效果最佳,很多人没吃对
朱元璋的重农抑商:真的抑制了商业吗?
明朝商业逆袭:重农抑商下的全球贸易中心
明朝重农抑商政策:从实施到松动的历史考察
陕西历史博物馆秦汉馆
空气污染致810万人死亡:这是一场全球性的健康危机
现代农业中的环保实践:可持续农业的新趋势
1983年TVB版《三侠五义》:经典角色塑造与侠义精神传承
健康科普丨糖化血红蛋白知多少?
《三侠五义》里的江湖恩怨,谁才是真正的英雄?
LiquidFun:打造游戏中的果冻特效
秋季行车安全指南:这些交通安全常识你掌握了吗?
明朝茶叶管制:重农抑商政策下的经济博弈
朱元璋的经济改革:奠定明朝盛世的基石
【债市观察】资金面主导市场 收益率短端上翘曲线熊平
Excel操作步骤:建立股票资产定价模型,寻找最佳投资组合
《如懿传》深度解析:历史背景与人物关系探究
张居正改革:一条鞭法如何改变明朝经济
朱元璋的农业政策:从荒地开垦到水利工程
平行四边形的面积公式及推导过程
明朝茶叶管制:中央集权下的政治博弈
和平精英地铁逃生模式:六张特色地图详解与玩法攻略