一、stack

 s.push():     向栈内压入一个成员;
 s.pop():      从栈顶弹出一个成员;
 s.empty():    如果栈为空返回true,否则返回false;
 s.top():      返回栈顶,但不删除成员;
 s.size():     返回栈内元素的大小;

二、queue

 s.back()         返回队尾元素
 s.empty()        如果队列空则返回真
 s.front()        返回队首元素
 s.pop()          删除队首元素
 s.push()         在队尾加入一个元素
 s.size()         返回队列中元素的个数
 s.emplace(args)  由args构造

  

三、priority_queue

 q.empty()             如果队列为空,则返回true,否则返回false
 q.size()              返回队列中元素的个数
  q.top()               返回具有最高优先级的元素值,但不删除该元素  q.push(item)          在基于优先级的适当位置插入新元素

1.  priority_queue允许用户为队列中元素设置优先级,放置元素的时候不是直接放到队尾,而是放置到比它优先级低的元素前面,标准库默认使用<操作符来确定优先级关系。

2.  priority_queue模板类有三个模板参数:元素类型,容器类型,比较算子。其中后两个可以省略,默认容器为vector,默认算子为less,即如果x<y判断为真,则y排到x前面,y先出队。

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

priority_queue<int> q1
priority_queue<pair<int,int>> q2;
priority_queue<int, vector<int>, greater<int>> q3;//定义优先级小的先出队

 

1. 测试代码

 #include<iostream>
 #include<queue>
 #include<functional>
 using namespace std;

 int main()
 {
     priority_queue<int, vector<int>, greater<int> > que;
     ; i < ; ++i)
         que.push(i);
     while (!que.empty())
     {
         cout << que.top() << " ";
         que.pop();
     }
     ;
 }

输出结果:

 

2. 测试代码

 #include<iostream>
 #include<queue>
 using namespace std;
 struct node
 {
     int x, y;
     friend bool operator < (node a, node b)  //标准库默认使用 < 来确认它们的关系,换成>就不行了哦
     {
         return a.y > b.y;   // >表示越小越优先,<表示越大越优先
     }
 };
 priority_queue<node> que;

 int main()
 {
     node v;
     ; i < ; i++)
     {
         v.x = i;
         v.y =  - i;
         que.push(v);
     }

     while (!que.empty())
     {
         cout << que.top().x << "," << que.top().y << endl;
         que.pop();
     }
     system("pause");
     ;
 }

输出结果:

【C++ Primer | 09】容器适配器的更多相关文章

  1. C++ Primer : 第九章 : vector变长、string的其他操作以及容器适配器

    vector变长机制.string的其他构造方法,添加.替换和搜索操作,string比较和数值转换,最后是容器适配器. vector对象是如何增长的 vector和string类型提供了一些成员函数, ...

  2. C++ Primer 学习笔记_33_STL实践与分析(7) --容器适配器

    STL实践与分析 --容器适配器 引: 除了顺序容器.标准库还提供了三种顺序容器适配器:queue,priority_queue和stack.适配器是标准库中的概念.包含容器适配器,迭代器适配器和函数 ...

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

    说明:本文仅供学习交流,转载请标明出处,欢迎转载! 上篇文章STL之容器适配器stack的实现框架已经介绍了STL是怎样借助基础容器实现一种经常使用的数据结构stack (栈),本文介绍下第二种STL ...

  4. STL之容器适配器stack的实现框架

    说明:本文仅供学习交流,转载请标明出处,欢迎转载! 一提到适配器(adapter).我们就想到了早期用电话线上网所用的调制解调器,俗称"猫"."猫"的作用是实现 ...

  5. 容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例

    一.容器适配器 stack queue priority_queue stack.queue.priority_queue 都不支持任一种迭代器,它们都是容器适配器类型,stack是用vector/d ...

  6. c++ 顺序容器学习 - 容器适配器

    摘要: 对 容器适配器 的疑问. 刚开始接触 容器适配器 时,总感觉怪怪的,认为多此一举,顺手搜了搜,原来我在这一点is not alone: STL容器适配器的用途 其中有个老兄说的好,这里 引用一 ...

  7. C++顺序性容器、关联性容器与容器适配器

    什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...

  8. c++ STL容器适配器

    一.标准库顺序容器适配器的种类     标准库提供了三种顺序容器适配器:queue(FIFO队列).priority_queue(优先级队列).stack(栈)   二.什么是容器适配器     &q ...

  9. C++ 容器:顺序性容器、关联式容器和容器适配器

    什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...

  10. 顺序容器----顺序容器操作,vector对象如何增长,额外的string操作,容器适配器

    一.顺序容器操作 1.向顺序容器添加元素 向顺序容器(array除外)添加元素的操作: 操作 说明 c.push_back(t) 在c的尾部创建一个值为t的元素.返回void c.emplace_ba ...

随机推荐

  1. Shell命令-文件及内容处理之cat、tac

    文件及内容处理 - cat.tac 1. cat:显示文件内容 cat命令的功能说明 cat命令用于连接多个文件并且打印到屏幕输出或重定向到指定文件中 cat命令的语法格式 cat [OPTION]. ...

  2. linux中去掉^M的方法

    转:https://blog.csdn.net/sty945/article/details/80347901 (1)是用VI的命令: 在命令模式下运行命令 :%s/^M//g 回车 注意:手动输入该 ...

  3. Django自带的用户认证auth模块

    一.介绍 基本上在任何网站上,都无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能. 使用Django,我们可以不需要自己写这些功能,因为Dj ...

  4. JS流程控制

    1.if...else... //if 语句:只有当指定条件为 true 时,该语句才会执行代码. //语法 if (condition) { 当条件为 true 时执行的代码 } //if...el ...

  5. Linux 播放网易云音乐(树莓派)

    环境安装sudo apt-get install python-pipsudo apt-get insyall python-dev mpg123sudo pip install Netease-Mu ...

  6. 题解:[APIO2007]风铃

    你需要选一个满足下面两个条件的风铃:(1) 所有的玩具都在同一层(也就是说,每个玩具到天花板之间的杆的个数是一样的)或至多相差一层.(2) 对于两个相差一层的玩具,左边的玩具比右边的玩具要更靠下一点. ...

  7. hdu 1848 简单SG函数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1848 Problem Description 任何一个大学生对菲波那契数列(Fibonacci num ...

  8. PEP8中文翻译(转)

    原文:https://github.com/zgia/manual PEP 8 -- Style Guide for Python Code PEP Index > PEP 8 -- Style ...

  9. nowcoder16450 托米的简单表示法

    题目链接 思路 仔细理解一下题意可以发现. 对于每个完整的括号序列都是独立的,然后就想到分治.高度是序列中所有括号序列的最大值,宽度是所有括号序列宽度和\(+1\). 然后仔细想了一下,这种分治应该是 ...

  10. Django---ORM框架

    一.get请求和post请求 GET请求: 1. 浏览器请求一个页面2. 搜索引擎检索关键字的时候 POST请求:1. 浏览器向服务端提交数据,比如登录/注册等 HTTP中GET与POST的区别 ht ...