当前位置:首页 » 《休闲阅读》 » 正文

C++,std::queue 详解

25 人参与  2024年09月19日 10:02  分类 : 《休闲阅读》  评论

点击全文阅读


在这里插入图片描述

文章目录

1. 概述2. 包含头文件3. 基本操作3.1 构造函数3.2 赋值操作3.3 成员函数 4. 迭代器5. 示例6. 注意事项参考


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 不提供迭代器,因为其主要设计目标是提供一个简单的队列接口,而不是通用的容器接口。

参考

【】std::queue
【】C++ 容器类
【】C++ Queue(队列)
【】队列与C++中的std::queue详解(多图超详细)
【】C++ 清空队列(queue)的几种方法


点击全文阅读


本文链接:http://zhangshiyu.com/post/161545.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 祖母寿宴,侯府冒牌嫡女被打脸了(沈屿安秦秀婉)阅读 -
  • 《雕花锦年,昭都旧梦》(裴辞鹤昭都)完结版小说全文免费阅读_最新热门小说《雕花锦年,昭都旧梦》(裴辞鹤昭都) -
  • 郊区41号(许洛竹王云云)完整版免费阅读_最新全本小说郊区41号(许洛竹王云云) -
  • 负我情深几许(白诗茵陆司宴)完结版小说阅读_最热门小说排行榜负我情深几许白诗茵陆司宴 -
  • 九胞胎孕妇赖上我萱萱蓉蓉免费阅读全文_免费小说在线看九胞胎孕妇赖上我萱萱蓉蓉 -
  • 为保白月光,侯爷拿我抵了债(谢景安花田)小说完结版_完结版小说全文免费阅读为保白月光,侯爷拿我抵了债谢景安花田 -
  • 陆望程映川上官硕《我的阿爹是带攻略系统的替身》最新章节阅读_(我的阿爹是带攻略系统的替身)全章节免费在线阅读陆望程映川上官硕
  • 郑雅琴魏旭明免费阅读_郑雅琴魏旭明小说全文阅读笔趣阁
  • 头条热门小说《乔书意贺宴临(乔书意贺宴临)》乔书意贺宴临(全集完整小说大结局)全文阅读笔趣阁
  • 完结好看小说跨年夜,老婆初恋送儿子故意出车祸_沈月柔林瀚枫完结的小说免费阅读推荐
  • 热推《郑雅琴魏旭明》郑雅琴魏旭明~小说全文阅读~完本【已完结】笔趣阁
  • 《你的遗憾与我无关》宋怀川冯洛洛无弹窗小说免费阅读_免费小说大全《你的遗憾与我无关》宋怀川冯洛洛 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1