首页 > 其他分享 >queue

queue

时间:2024-08-20 22:49:40浏览次数:7  
标签:容器 元素 back queue push stack

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 也没有迭代器。访问元素的唯一方式是遍历容器内容,并移除访问过的每一个元素。

标签:容器,元素,back,queue,push,stack
From: https://www.cnblogs.com/sprinining/p/18370500

相关文章

  • informer中的WorkQueue机制的实现分析与源码解读(3)之限速队列RateLimitingQueue
    概述前面2篇文章介绍了workqueue中的普通队列FIFO和延时队列。接下来我们分析workqueue中的第三种队列:限速队列client-go的util/workqueue包里主要有三个队列,分别是普通队列Queue,延时队列DelayingQueue,限速队列RateLimitingQueue,后一个队列以前一个队列的实现为基础,......
  • DelayQueue 延迟队列使用
    一、DelayQueue是什么DelayQueue是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。这种队列是有序的,即队头对象的延迟到期时间最长。注意:不能将null元素放置到这种队列中。二、DelayQueue能做什么1.淘宝订单业务:下......
  • C++提高编程—4、STL常用容器—list(链表)和queue(队列)
    7list容器 7.1基本概念 7.2 构造函数 7.3 赋值和交换 7.4 大小操作  使用10000来填充。7.5 插入与删除 7.6 数据存取 7.7 反转与排序  8set/multset容器 7.1基本概念7.2 构造和赋值7.3大小和交换7.4 插入与删除7.5 查......
  • Bug | priority_queue.size()无符号整型进行减法运算引发的惨案
    问题描述:使用优先队列(priority_queue)来实现大根堆和小根堆。在维护两个堆平衡的过程中,需要使用priority_queue.size()来判断两个堆的大小。因为.size()返回的是无符号类型,直接进行减法运算会导致错误。错误代码if(max_heap.size()-min_heap.size()>1)Balance(1);......
  • LeetCode | 225 Implement Stack Using Queues
    分析阻塞(Blocking)阻塞操作指的是在调用一个函数或方法时,如果该操作不能立即完成(例如,因为需要等待某个事件的发生,如数据达到或资源可用),那么当前线程或进程会被挂起(暂停执行),直到操作完成为止。在这个等待期间,线程或进程无法执行其他任务。等待:调用方必须等待操作完成独......
  • C++标准模板库(STL)|容器|vector| queue|
    对STL进行总结,STL是standardtemplatelibrary的简写,是C++中的一个标准模板库,用于实现常用的数据结构和算法,它是C++程序员经常使用的一个工具箱。STL的主要目的是提高开发效率和代码质量,使得程序员可以更加便捷地完成常见的操作。里面包括:算法(algorithm)、容器(container)、仿函......
  • 队列(Queue)
    1、基本概念        队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。       ......
  • queue容器
    一、queue基本概念概念:queue是一种先进先出的数据结构,他有两个出口二、queue常用接口构造函数:queue<T>que;//queue采用模板类实现,queue对象的默认构造形式queue(constqueue&que);//拷贝构造函数赋值操作:queue&operator=(constqueue&que);//重载等号操作......
  • Queue 队列 -- C语言实现 -
    队列队列的概念队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点FIFO(FirstInFirstOut)入队:进行插入操作的一端称为队尾出队:进行删除操作的一端称为队头链实栈代码实现Ququq.h#pragmaonce#define_CRT_SECURE_NO_WARNI......
  • 「队列」实现FIFO队列(先进先出队列|queue)的功能 / 手撕数据结构(C++)
    概述队列,是一种基本的数据结构,也是一种数据适配器。它在底层上以链表方法实现。队列的显著特点是他的添加元素与删除元素操作:先加入的元素总是被先弹出。一个队列应该应该是这样的:--------------QUEUE-------------———————————......