浅谈C++ STL queue 容器

浅谈C++ STL queue 容器

本篇随笔简单介绍一下\(C++STL\)中\(queue\)容器的使用方法和常见的使用技巧。\(queue\)容器是\(C++STL\)的一种比较基本的容器。我们在学习这个容器的时候,不仅要学到这个容器具体的使用方法,更要从中体会\(C++STL\)的概念。

queue容器的概念

\(queue\)在英文中是队列的意思。队列是一种基本的数据结构。而\(C++STL\)中的队列就是把这种数据结构模板化了。我们可以在脑中想象买票时人们站的排队队列。我们发现,在一个队列中,只可以从队首离开,从队尾进来(没有插队,想啥呢)。即一个先进先出的数据结构。

上图理解:

queue容器的声明

\(queue\)容器存放在模板库:#include<queue>里,使用前需要先开这个库。

\(queue\)容器的声明遵循\(C++STL\)的一般声明原则:

容器类型 名称

例:


#include<queue>

queue<int> q;

queue<char> q;

queue<pair<int,int> > q;

queue<node> q;

struct node{...};

queue容器的使用方法

\(queue\)容器的使用方法大致如下表所示:

用法 作用
q.front(),q.back() 返回queue的首、尾元素
q.push() 从queue末尾加入一个元素
q.size() 返回queue当前的长度(大小)
q.pop() 从queue末尾删除一个元素
q.empty() 返回queue是否为空,1为空、0不为空

注意,虽然\(vector\)和\(queue\)是两种最基本的\(STL\)容器,但请记住它们两个不是完全一样的。就从使用方法来讲:

\(queue\)不支持随机访问,即不能像数组一样地任意取值。并且,\(queue\)并不支持全部的\(vector\)的内置函数。比如\(queue\)不可以用\(clear()\)函数清空,清空\(queue\)必须一个一个弹出。同样,\(queue\)也并不支持遍历,无论是数组型遍历还是迭代器型遍历统统不支持,所以没有\(begin(),end();\)函数,使用的时候一定要清楚异同!

原文地址:https://www.cnblogs.com/fusiwei/p/11822867.html

时间: 2024-08-29 03:19:18

浅谈C++ STL queue 容器的相关文章

浅谈C++ STL deque 容器

浅谈C++ STL deque 容器 本篇随笔简单介绍一下\(C++STL\)中\(deque\)容器的使用方法及常见使用技巧. deque容器的概念 \(deque\)的意义是:双端队列.队列是我们常用而且必须需要掌握的数据结构.\(C++STL\)中的确有模拟队列的模板:#include<queue>中的\(queue\)和\(priority\_queue\).队列的性质是先进先出,即从队尾入队,从队首出队.而\(deque\)的特点则是双端进出,即处于双端队列中的元素既可以从队首进/出

浅谈C++ STL stack 容器

浅谈C++ STL stack 容器 本篇随笔简单介绍一下\(C++STL\)中\(stack\)容器的使用方法和常见的使用技巧. stack容器的概念 \(stack\)在英文中是栈的意思.栈是一种基本的数据结构.而\(C++STL\)中的栈就是把这种数据结构模板化了. 栈的示意图如下:这是一个先进后出的数据结构.这非常重要!! 事实上,\(stack\)容器并不是一种标准的数据结构,它其实是一个容器适配器,里面还可以存其他的\(STL\)容器.但那种使用方法过于高深而且不是很常用,所以在此不

浅谈C++ STL中的优先队列(priority_queue)

从我以前的博文能看出来,我是一个队列爱好者,很多并不是一定需要用队列实现的算法我也会采用队列实现,主要是由于队列和人的直觉思维的一致性导致的. 今天讲一讲优先队列(priority_queue),实际上,它的本质就是一个heap,我从STL中扒出了它的实现代码,大家可以参考一下. 首先函数在头文件<queue>中,归属于命名空间std,使用的时候需要注意. 队列有两种常用的声明方式: std::priority_queue<T> pq; std::priority_queue<

浅谈C++ STL

C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量.链表.队列.栈. C++ 标准模板库的核心包括以下三个组件: 组件 描述 容器(Containers) 容器是用来管理某一类对象的集合.C++ 提供了各种不同类型的容器, 比如 deque.list.vector.map 等. 算法(Algorithms) 算法作用于容器.它们提供了执行各种操作的方式,包括对容器内容执 行初始化.排序.搜索和转换

浅谈C++容器动态内存管理的优化

在信息学竞赛中,C++的容器的用途非常广泛,但经常因常数过大而超时.怎样才能提高它们的效率呢? 我们知道,容器是存储同一类对象的对象,既然"对象"我们无法改变,那么我们只能从"存储"入手,不难想到,不同容器在实现上的根本区别是它们对应着不同的内存组织方式,内存管理无疑是这种实现的核心,所以优化内存管理是加快容器效率的最好途径之一. 一.内存分配器简介 怎样才能优化内存管理呢?很简单,C++为我们提供了这样的接口,我们可以通过自定义容器模板中的最后一个allocato

C++:浅谈c++资源管理以及对[STL]智能指针auto_ptr源码分析,左值与右值

C++:浅谈c++资源管理以及对[STL]智能指针auto_ptr源码分析 by 小威威 1. 知识引入 在C++编程中,动态分配的内存在使用完毕之后一般都要delete(释放),否则就会造成内存泄漏,导致不必要的后果.虽然大多数初学者都会有这样的意识,但是有些却不以为意.我曾问我的同学关于动态内存的分配与释放,他的回答是:"只要保证new和delete成对出现就行了.如果在构造函数中new(动态分配内存),那么在析构函数中delete(释放)就可以避免内存泄漏了!" 事实果真如此么?

STL之容器适配器queue的实现框架

说明:本文仅供学习交流,转载请标明出处,欢迎转载! 上篇文章STL之容器适配器stack的实现框架已经介绍了STL是如何借助基础容器实现一种常用的数据结构stack (栈),本文介绍下另外一种STL内部定义的另外一种STL容器适配器queue(队列). 对于接触过数据结构的人来说,队列并不陌生,它是一种FIFO(first in first out)的数据结构.与栈相比,队列的不同之处在于:(1)队列是一种先进先出的数据结构,而栈则是一种后进先出的数据结构:(2)队列支持首尾两端的访问操作,而栈

STL学习系列五:Queue容器

Queue简介 queue是队列容器,是一种“先进先出”的容器. queue是简单地装饰deque容器而成为另外的一种容器. #include <queue> 1.queue对象的默认构造 queue采用模板类实现,queue对象的默认构造形式:queue<T> queT; 如: queue<int> queInt; //一个存放int的queue容器. queue<float> queFloat; //一个存放float的queue容器. ... //尖括

STL之stack容器和queue容器

摘要:本文主要介绍了两种容器——stack容器和queue容器. 1.基本概念   stack容器 queue容器 容器介绍 stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口, 形式如图所示.stack容器允许新增元素,移除元素,取得栈顶元素,但是除了 最顶端外,没有任何其他方法可以存取stack的其他元素.换言之,stack不允 许有遍历行为. 有元素推入栈的操作称为:push,将元素推出stack的操作称为pop. Queue是一种先进先出(