c++queue容器

C++ STL容器queue C++ queue 容器 定义于头文件 <queue>,申明为: template< class T, class Container = std::deque<T> > class queue; std::queue 类是容器适配器,它给予程序员队列的功能——尤其是 FIFO (先进先出)数据结构。 类模板表现为底层容器的包装器——只提供特定... 阅读详情

一.queue模版类的定义在<queue>头文件中。

queue与stack模版非常类似,queue模版也需要定义两个模版参数,一个是元素类型,一个是容器类型,元素类型是必要的,容器类型是可选的,默认为dqueue类型。

定义queue对象的示例代码如下:

queue<int>q1;

queue<double>q2;

queue的基本操作有:

1.入队:如q.push(x):将x元素接到队列的末端;

2.出队:如q.pop() 弹出队列的第一个元素,并不会返回元素的值;

3,访问队首元素:如q.front()

4,访问队尾元素,如q.back();

5,访问队中的元素个数,如q.size();

二.优先队列

在<queue>头文件中,还定义了一个非常有用的模版类priority_queue(优先队列),优先队列与队列的差别在于优先队列不是按照入队的顺序出队,而是按照队列中元素的优先权顺序出队(默认为大者优先,也可以通过指定算子来指定自己的优先顺序)。

priority_queue模版类有三个模版参数,元素类型,容器类型,比较算子。其中后两个都可以省略,默认容器为vector,默认算子为less,即小的往前排,大的往后排(出队时序列尾的元素出队)。

定义priority_queue对象的示例代码如下:

priority_queue<int >q1;

priority_queue<pair<int,int> >q2;

priority_queue<int,vector<int>,greater<int> >q3;//定义小的先出队

priority_queue的基本操作均与queue相同

初学者在使用priority_queue时,最困难的可能就是如何定义比较算子了。如果是基本数据类型,或已定义了比较运算符的类,可以直接用STL的less算子和greater算子——默认为使用less算子,即小的往前排,大的先出队。如果要定义自己的比较算子,方法有多种,这里介绍其中的一种:重载比较运算符。优先队列试图将两个元素x和y代入比较运算符(对less算子,调用x<y,对greater算子,调用x>y),若结果为真,则x排在y前面,y将先于x出队,反之,则将y排在x前面,x将先出队。

看下面这个简单的示例:

[cpp]  view plain  copy
 print ?
  1. #include<iostream>  
  2. #include<queue>  
  3. #include<stdlib.h>  
  4. using namespace std;  
  5. class T  
  6. {  
  7. public:  
  8.     int x,y,z;  
  9.     T(int a,int b,int c):x(a),y(b),z(c)  
  10.     {  
  11.     }  
  12. };  
  13. bool operator<(const T&t1,const T&t2)  
  14. {  
  15.     return t1.z<t2.z;  
  16. }  
  17. int main(void)  
  18. {  
  19.     priority_queue<T>q;  
  20.     q.push(T(4,4,3));  
  21.     q.push(T(2,2,5));  
  22.     q.push(T(1,5,4));  
  23.     q.push(T(3,3,6));  
  24.     while(!q.empty())  
  25.     {  
  26.         T t=q.top();  
  27.         q.pop();  
  28.         cout<<t.x<<" "<<t.y<<" "<<t.z<<endl;  
  29.     }  
  30.     system("Pause");  
  31.     return 1;  
  32. }  


输出结果为

注意这里是按照z的顺序从大到小出队的。

如果我们把上述例子中的比较运算符重载改为:

bool operator<(const T &t1,const T &t2)

{

return t1.z>t2.z;

}

那么得到的输出结果将会按照z的顺序从小到大出队。


C++queue队列基础使用 C++的STL中,queue(队列)的基础使用 阅读详情

相关推荐

c++STL容器Queue

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

希望我的博客,能帮上你解决学习中工作中所遇到的问题 577

c++queue容器介绍

一.queue模版类的定义在头文件中。 queue与stack模版非常类似,queue模版也需要定义两个模版参数,一个是元素类型,一个是容器类型,元素类型是必要的,容器类型是可选的,默认为dqueue类型。 定义queue对象的示例代码如下: queueq1; queueq2; queue的基本操作有: 1.入队:如q.push(x):将x元素接到队列的末端; 2.出队:如q.pop

我的ACM 8万+

c++ queue的简单用法

一、定义 queue<类型> 名称; 例如:queue<int> q1; queue<double> q2; queue<float> q3 二、基本操作 que.front() // 取队首元素 que.back() // 取队尾元素 que.push(x ) // 将元素x入队,从已有元素后面增加元素 que.pop() // 将队首元素出队 que....

努力努力努力 1614

C++queue使用详细说明

一、queue的介绍 queue 翻译为队列,在 STL 中主要则是实现了一个先进先出的容器。 二、queue的定义 单独定义一个 queuequeue<typename> name; //这里的typename可以是任何基本类型,例如 int、double、char、结构体等,也可以是STL标准容器,例如vector、set、queue等。 三、queue容器内元素的访问 由于队列(queue)本身就是一种先进先出的限制性数据结构,因此在 ...

但行好事,莫问前程 2万+

C++ 队列(queue) 详解:从定义到应用(原名<C++queue(队列))

摘要:本文介绍了C++中队列(queue)的基本概念和使用方法。队列是一种先进先出(FIFO)的数据结构,通过<queue>头文件实现。文章内容包括队列的定义、初始化方式(支持deque和list容器)、常用成员函数(如push、pop、front、back等)的功能说明,并提供了具体的使用示例代码。最后通过一个完整示例演示了如何创建队列、添加/删除元素以及遍历队列,帮助读者理解队列在实际编程中的应用场景。

weixin_51710308的博客 1万+

C++容器适配器stack、queue、priority_queue

C++容器适配器stack、queue、priority_queue

Xpccccc的博客 1214

C++容器:stack和queue

队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。标准容器类deque和list满足了这些要求。默认情况下,如果没有为queue实例化指定容器类,则使用标准容器deque。queue文档。

DDDDDDDRDDR的博客 1014

C++容器——queue

C++queue容器,使用和用法

Three_stones的博客 628

C++知识整理day7容器——stack和queue容器(包括deque容器、priority_queue容器

我们可以看到,在我们之前学的容器中,例如vector,里面调的都是内存池,而stack和queue里面都是一个容器适配器。Q:什么是适配器?A:适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。例如:Q:为什么还要有deque这种容器?A:首先,deque是双带你队列,它允许两端都可以插入和删除元素。

qq_59702185的博客 725

C++ 十五】C++ queue容器

本文包含queue基本概念、queue构造函数、queue赋值操作、queue数据存取、queue大小操作。

qq_45138120的博客 2778

C++ STL priority_queue容器详解

priority_queue 容器适配器模拟的也是队列这种存储结构,即使用此容器适配器存储元素只能“从一端进(称为队尾),从另一端出(称为队头)”,且每次只能访问 priority_queue 中位于队头的元素。但是,priority_queue 容器适配器中元素的存和取,遵循的并不是 “First in,First out”(先入先出)原则,而是“First in,Largest out”原则。直白的翻译,指的就是先进队列的元素并不一定先出队列,而是优先级最大的元素最先出队列。

Lemon_C17y的博客 1121

C++ STL Queue容器详解

queue 容器 1 queue 基本概念 概念:Queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口。 一个模板容器适配器类,它提供功能的限制,限制对一些基本容器类型的前端和后端元素的访问权限。 可以在后端添加或从前端移除元素,并且可以在队列的任何一端检查元素。 适用于队列的基础容器类包括 deque 和 list 队列容器允许从一端新增元素,从另一端移除元素 队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为 队列中进数据称为 — 入队

frighting_ing的博客 940

C++ 特殊容器 —— queue 用法详解

C++ 特殊容器 —— queue 用法详解 写在前面:近期正在学习C++的STL容器,因此在这里做一下日志记录,主要介绍一些容器基本成员函数的用法, 配上实际用例,并不涉及原理。但别人的博客终究是别人的, 最好自己上手操作一下. 写的不好, 请大神手下留情. 下面说的 “运行之后” 表示: 运行上个语句之后的结果. 一行如果说的太长的话, 就得拖动下面的进度条才能看到后面的内容, 非常麻烦 ...

Ember_Sky 616

C++ STL——Queue容器、priority_queue

一、queue 1、基本概念 Queue是一种容器适配器 C++ 标准库定义了三种类型的容器适配器:stack、queue 和 priority_queue。 每种适配器都限制了一些基础容器类的功能,以便对标准数据结构提供精确控制的接口。 Queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口。一个模板容器适配器类,它提供功能的限制,限制对一些基本容器类型的前端和后端元素的访问权限。 可以在后端添加或从前端移除元素,并且可以在队列的任何一端检查元素。 和

LiuXF93的博客 409

C++queue容器

C++queue容器如何使用

JackerCSDN的博客 471

C++STL容器queue和priority_queue

queueC++标准库的一个容器适配器,用于实现先进先出(FIFO)的队列数据结构。它基于其他底层容器(如 deque或list)实现,默认使用deque作为底层容器queue是一个简单易用的先进先出(FIFO)容器适配器, 它支持在队尾插入元素、在队头删除元素,以及访问队头和队尾元素。底层容器:默认使用deque,但可以指定其他容器(如 list)。受限访问:只能访问队头或队尾元素,不能随机访问中间元素。插入与删除:队尾插入与队头删除的时间复杂度为O(1)。先进先出:元素从队尾插入,队头删除。

qq_55527904的博客 459

C++ STL Queue容器使用详解

它基于其他底层容器实现队列数据结构,遵循先进先出(FIFO)原则。是标准模板库(STL)中的。

2301_80167761的博客 576

C++】STL常用容器Queue基础

queue是队列容器,是一种“先进先出”的容器queue是简单地装饰deque容器而成为另外的一种容器。 #include <queue>

不分解的单应矩阵 422
下一篇: 在c++中, 什么时候用*什么时候用&?
四大名捕威震江湖
博客等级 码龄10年 21粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值