一、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. Maven 建立的项目resource对应的实际位置

        如图,springmvc-servlet.xml在项目中实际位置为: WEB-INF/classes/config/springmvc/springmvc-servlet.xml   在配置项 ...

  2. BZOJ4269再见Xor——高斯消元解线性基

    题目描述 给定N个数,你可以在这些数中任意选一些数出来,每个数可以选任意多次,试求出你能选出的数的异或和的最大值和严格次大值. 输入 第一行一个正整数N. 接下来一行N个非负整数. 输出 一行,包含两 ...

  3. mpvue——支持less

    安装 安装less和less-loader,我用的是淘宝源,你也可以直接npm $ cnpm install less less-loader --save 配置 打开build目录下的webpack ...

  4. 【UOJ295】【ZJOI2017】线段树 倍增

    题目大意 http://uoj.ac/problem/295 题解 考虑像 zkw 线段树一样,从 \([l-1,l-1],[r+1,r+1]\) 这两个区间开始往上跳,直到两个指针碰到一起为止. 先 ...

  5. 帝国cms打开慢

    发现有个站(http://www.953239.com/)打开很慢,改了php版本后,快了一倍

  6. Java多线程编程-线程之间的通信

    转载自:这里 学习了基础的线程知识 看到了 线程之间的通信 线程之间有哪些通信方式呢? 1.同步 这里讲的同步是指多个线程通过synchronized关键字这种方式来实现线程间的通信. public ...

  7. postgres 基本操作

    登陆: $ psql -U <user> -d <dbname> 数据库操作: $ \l      //查看库 $  \c <dbname>   //切换库 // ...

  8. 【强大精美的PS特效滤镜合集】Alien Skin Eye Candy for Mac 7.2.2.20

    [简介] Alien Skin Eye Candy for Mac 7.2.2 版本,支持最新的PhotoShop CC 2019.2018等版本,这是一款强大酷炫的PS特效滤镜合集,具有32种滤镜和 ...

  9. centos7项目部署

    1. 安装nginx   添加CentOS 7 Nginx yum资源库 sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/ng ...

  10. webserver Etcd Cluster / CoreOS etcd / macOS etcd

    s https://coreos.com/etcd/ https://coreos.com/etcd/docs/latest/ macOS mojave etcd 003deMac-mini:~ ma ...