1.模板原型

template<class T, class Sequence=vector<T>, class Compare=less<typename Sequence::value_type>>
class priority_queue
{
public:typedef typename Sequence::value_type value_type;typedef typename Sequence::size_type size_type;typedef typename Sequence::reference reference;typedef typename Sequence::const_reference const_reference;
protected:Sequence c;Compare comp;
public:priority_queue(): c() {};explicit priority_queue(const Compare& x): c(), comp() {}template<class InputInterator>priority_queue(InputIterator first, InputIterator last, const Compare& x):c(first, last), comp(x) {make_heap(c.begin(), c.end(), comp);}pirority_queue(InputItrator first, InputIterator last):c(first, last){make_heap(c.begin(), c.end(), comp);}};

我们看看我们的top是啥

const_reference top() const {return c.front();}

就是vector的头部,然后让咱们看看push是啥

void push(const value_type& x)
{__STL_TRY {c.push_back(x);push_heap(c.begin(), c.end(), comp);}}

相当于重建了一个堆, 测试如下

()

c++ stl之pirority_queue相关推荐

  1. STL库(C++11)提供的异步执行方法的方式

    在进行并发编程的时候难免会遇到异步执行时候,现代C++标准库提供了几种异步执行的方式,本文收集整理了一下,以备将来翻阅. Thread方式 Thread 是STL提供的一种快捷创建线程的方式,极大方便 ...

  2. C++ 笔记(24)— STL map 类(map实例化、插入、查找、删除)

    1. STL 映射类简介 map 和 multimap 是键-值对容器,支持根据键进行查找,区别在于,后者能够存储重复的键,而前者只能存储唯一的键. 为了实现快速查找, STL map 和 multi ...

  3. C++ 笔记(23)— STL vector 类(实例化 vector、末尾插入、指定位置插入、数组方式访问元素、指针方式访问元素、删除元素、大小与容量区别)

    1. vector 特点 vector 是一个模板类,提供了动态数组的通用功能,具有如下特点: 在数组末尾添加元素所需的时间是固定的,即在末尾插入元素的所需时间不随数组大小而异,在末尾删除元素也如此: ...

  4. C++ 笔记(22)— STL string 类(字符串赋值、访问、拼接、查找、翻转、大小写转换)

    1. 实例化和赋值 STL string #include <string> #include <iostream>int main () {using namespace s ...

  5. C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)

    C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的.独立的.不属于任何类的函数组成的.函数库继承自 C 语言. 面向对象类库: 这个库是类及其相关函数的集合. C++ 标准库包含了所有的 ...

  6. STL map 简介

    STL map 简介 转载于:http://www.cnblogs.com/TianFang/archive/2006/12/30/607859.html 1.目录 map简介 map的功能 使用ma ...

  7. 【STL源码剖析读书笔记】【第5章】关联式容器之hashtable

    1.hashtable在插入.删除.搜寻操作上具有"常数平均时间"的表现,不依赖输入元素的随机性. 2.hashtable通过hashfunction将元素映射到不同的位置,但当不 ...

  8. C++ stl vector介绍

    转自: STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if ...

  9. STL vector list deque区别与实现

    1 vector 向量 相当于一个数组     在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacitu ...

最新文章

  1. 陈雷教授在线受聘清华大学杰出访问教授
  2. 给定一组查找关键字(19,14,23,1,65,20,84,27,55,11,10,79) 哈希函数为:H(key)=key % 13, 哈希表长为m=15,设每个记录的查找概率相等。【MOOC】
  3. 听说这是和女朋友住一起后的现象之一
  4. Java2Days 2012:Java EE
  5. 看《烈火雄心》 --当大家从火里出来,我们进去
  6. Apache Flink 1.9.0 为什么将支持 Python API ?
  7. three 实现绕物体旋转,卫星绕星球旋转
  8. 58同城 | Embedding技术在房产推荐中的应用
  9. 基于51单片机的跳一跳游戏程序设计(C语言)
  10. php采标教程,国内液压与气动行业标准大全
  11. python读取像素值
  12. 优动漫PAINT实用宝典(图层篇)——栅格图层
  13. 电脑设置u盘启动方法
  14. NTFS文件系统详解
  15. edm html超链接,EDM邮件中的html/css兼容性问题
  16. python爬虫实训总结报告_python爬虫简单总结(一)
  17. 处处吻(粤语汉字英译)
  18. 公司的“奋斗者协议”签不签?网友吐槽:你敢让我签我就敢辞
  19. 如何实现一个下载进度条/播放进度条
  20. DPC创始人Bard:DPC公链基于dpos算法开发的一条支付公链

热门文章

  1. Windows平台SSH登录Linux并使用图形化界面
  2. 对于技术 方法 生活等问题的思考
  3. SpringMVC解决@ResponseBody返回乱码问题
  4. 文件上传(上传至独立的文件服务器)
  5. 阿里小邮局黑科技 这就是传说中“别人的公司”
  6. 《游戏开发物理学(第2版)》一1.3 坐标系
  7. IOS 非常流畅的滑动tableView
  8. Eclipse小技巧
  9. 关于Python正则表达式的问题
  10. Flex的NumericStepper控件