queue

news/2024/9/21 4:33:36/文章来源:https://www.cnblogs.com/sprinining/p/18370500

queue

只能访问 queue<T> 容器适配器的第一个和最后一个元素。只能在容器的末尾添加新元素,只能从头部移除元素。

queue 的生成方式和 stack 相同,下面展示如何创建一个保存字符串对象的 queue:

queue<string> words;

也可以使用拷贝构造函数:

queue<string> copy_words {words}; 

stack<T>queue<T> 这类适配器类都默认封装了一个 deque<T> 容器,也可以通过指定第二个模板类型参数来使用其他类型的容器:

queue<string, list<string>>words;

底层容器必须提供这些操作:front()、back()、push_back()、pop_front()、empty() 和 size()。

queue 操作

queue 和 stack 有一些成员函数相似,但在一些情况下,工作方式有些不同:

  • front():返回 queue 中第一个元素的引用。如果 queue 是常量,就返回一个常引用;如果 queue 为空,返回值是未定义的。
  • back():返回 queue 中最后一个元素的引用。如果 queue 是常量,就返回一个常引用;如果 queue 为空,返回值是未定义的。
  • push(const T& obj):在 queue 的尾部添加一个元素的副本。这是通过调用底层容器的成员函数 push_back() 来完成的。
  • push(T&& obj):以移动的方式在 queue 的尾部添加元素。这是通过调用底层容器的具有右值引用参数的成员函数 push_back() 来完成的。
  • pop():删除 queue 中的第一个元素。
  • size():返回 queue 中元素的个数。
  • empty():如果 queue 中没有元素的话,返回 true。
  • emplace():用传给 emplace() 的参数调用 T 的构造函数,在 queue 的尾部生成对象。
  • swap(queue<T> &other_q):将当前 queue 中的元素和参数 queue 中的元素交换。它们需要包含相同类型的元素。也可以调用全局函数模板 swap() 来完成同样的操作。

queue<T> 模板定义了拷贝和移动版的 operator=(),对于所保存元素类型相同的 queue 对象,它们有一整套的比较运算符,这些运算符的工作方式和 stack 容器相同。

和 stack 一样,queue 也没有迭代器。访问元素的唯一方式是遍历容器内容,并移除访问过的每一个元素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/784546.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

输出一个三角形

1.用for循环设置5次循环 2.包住循环,输出空白的三角形 3.接着for循环输出三角形建议使用debug来了解具体如何运行,此处不好解释

VMware 虚拟机BIOS增加OEM版SLIC2.1

VMware 虚拟机BIOS增加OEM版SLIC2.1 背景 因安装的VMware Win7虚拟机需激活, 现需修改虚拟机BIOS, 增加SLIC2.1支持, 方便激活Win7 指定你的bios文件路径在你的虚拟机目录下修改 *.vmx配置文件, 添加以下内容, 以使用自定义BIOS路径: # BIOS.440.xxx.ROM 是你的BIOS路径 bios44…

一门多范式的编程语言Scala学习的第一天-简介

Scala 1、Scala简介 1.1Scala的介绍scala是一门多范式的编程语言 Scala是把函数式编程思想和面向对象编程思想结合的一种编程语言 大数据计算引擎spark是由Scala编写的1.2Scala的特性 1.2.1多范式 1.2.1.1面向对象特性Scala 是一种高度表达性的编程语言,它结合了面向对象编程和…

VSCode系列 - 如何用VSCode搭建C++高效开发环境(1)

VSCode是笔者用过的最好用的开发工具,没有之一。笔者14年的码龄生涯中,先后用过Eclipse、 IntelliJ IDEA、 WebStorm、 PyCharm、 Visual Studio(2010/2013/2015)、 NetBeans、 Sublime Text等,但自从用VSCode之后,就再没换过其他工具,一直用到现在有5年多的时间。 1. 本文…

[PHP GD Study]我的世界皮肤转迷你世界

涉及图片旋转、放大、复制 目前仅实现了头部的复制 准备工作:迷你世界皮肤底图(命名为miniw.png):我的世界皮肤:源代码: ⚠AI生成 <?php // 设置上传文件的目标目录 $target_dir = "uploads/"; // 创建目标目录如果不存在 if (!file_exists($target_dir)) …

合同等文档的比对实现测试

记录一下合同等文档的比对测试,以下是实现docx格式与txt格式的内容对比结果图,其中图1为docx格式,是房屋租赁合同的内容对比结果;图2是纯文本txt格式的内容对比结果。图1图2

SourceTree离线安装

需求:要求在内网环境开发,连不上外网,安装sourceTree又是需要联网的,这就是尴尬了又不想用命令,已经习惯了sourceTree. 不说废话,上干货: 注意!!!一定按照步骤来,否则不会生效的。 注意!!!一定按照步骤来,否则不会生效的。 注意!!!一定按照步骤来,否则不会生…

037、Vue3+TypeScript基础,使用router.push进行导航式路由跳转

01、main.js代码如下:// 引入createApp用于创建Vue实例 import {createApp} from vue // 引入App.vue根组件 import App from ./App.vue//引入路由 import router from ./routerconst app = createApp(App); //使用路由 app.use(router); // App.vue的根元素id为app app.mount…

WPF:静态、动态资源以及资源词典

WPF:静态、动态资源以及资源词典 静态资源与动态资源 我们常常会使用样式或者控件模板放在Window.Resources中,比如这样:静态资源与动态资源使用如下: <Window.Resources><SolidColorBrush x:Key="SolidColor" Color="#FF0000" /> </Win…

Hat靶场

Hat靶机的ip是192.168.200.8先用nmap扫描一下靶机所有的端口 nmap -p- 192.168.200.8 发现22端口不知道是否开放 还有一个65535 的unkown端口详细查看一下65535端口的信息 nmap -p 65535 -sV 192.168.200.8 貌似是个ftp 但是尝试匿名连接是连接不上去的dirsearch扫描了一下80端…

.NET 智能组件完全开源

Daniel Roth在2024年3月20日发布了一篇文章: .NET 智能组件简介 – AI 驱动的 UI 控件。文章主要介绍了.NET Smart Components,这是一系列可以快速轻松地添加到.NET应用程序中的AI驱动的UI组件。这些组件旨在简化在现有软件中添加AI功能的过程,无需花费大量时间重新设计用户体…

Ros2 Moveit2 - Robot Model and Robot State

Robot Model and Robot State 在本节中,我们将向您介绍用于在 MoveIt 中使用运动学的 C++ API。 RobotModel 和 RobotState 类 RobotModel 和 RobotState 类是提供对机器人运动学访问权限的核心类。 RobotModel 类包含所有链接和关节之间的关系,包括从 URDF 加载的关节限制属…