priority_queue为复合结构排序: 

 #include <iostream>
#include <queue> using namespace std;
struct Node{
int x;
string y;
Node( int a= , string b = "" ):
x(a), y(b) {}
};
bool operator<( Node a, Node b ){ // 注意这里的顺序和sort()里面的谓词函数不一样!
// bool为真的 优先级小
if( a.x == b.x ) return a.y < b.y;
return a.x < b.x;
}
//自定义重载小于操作符
int main(){
/********************************************
对于自定义类型,则必须自己重载 operator<
自定义类型重载 operator< 后,声明对象时就可以只带一个模板参数。
看下面的例子
*******************************************/ cout<<"自定义: "<<endl;
priority_queue<Node> q2;
priority_queue<int> q3;
std::string tmp = ""; for( int i= ; i>; --i ){
tmp = tmp + "";
q2.push( Node(i, tmp) );
q3.push(i);
}
while( !q2.empty() ){
cout << q2.top().x << ' ' << q2.top().y << endl;
q2.pop();
}
while( !q3.empty() ){
cout << "q3 output: "<<q3.top() << endl;
q3.pop();
}
//注意上面不能这样来定义:priority_queue<Node, vector<Node>, greater<Node> >;
//这样定义是错误的!!!!
//原因是:greater<node>没有定义 //必须定义如下函数对象,才能这样定义:
// priority_queue<Node, vector<Node>, cmp >;
/*
struct cmp{
bool operator() ( Node a, Node b ){
if( a.x== b.x ) return a.y> b.y; return a.x> b.x; }
};
*/
return ;
} root@u18:~/cp/test# g++ priority.cpp -g -Wall
root@u18:~/cp/test# valgrind --tool=memcheck --leak-check=yes ./a.out
==== Memcheck, a memory error detector
==== Copyright (C) -, and GNU GPL'd, by Julian Seward et al.
==== Using Valgrind-3.7. and LibVEX; rerun with -h for copyright info
==== Command: ./a.out
====
自定义: q3 output:
q3 output:
q3 output:
q3 output:
q3 output:
q3 output:
q3 output:
q3 output:
q3 output:
q3 output:
====
==== HEAP SUMMARY:
==== in use at exit: bytes in blocks
==== total heap usage: allocs, frees, , bytes allocated
====
==== All heap blocks were freed -- no leaks are possible
====
==== For counts of detected and suppressed errors, rerun with: -v
==== ERROR SUMMARY: errors from contexts (suppressed: from )

STL之priority_queue为复合结构排序的更多相关文章

  1. STL之priority_queue(优先队列)

    priority_queue是一个容器适配器,在这个容器里第一个数据元素是最大的.它的使用场景是什么样:如果12306抢票,为什么黄牛能抢这么多票,感觉12306那边的请求队列是一个优先队列,黄牛的请 ...

  2. C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET

    C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET C++ STL中Map的相关排序操作:按Key排序和按Value排序 分类: C ...

  3. Effective STL 学习笔记 31:排序算法

    Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  4. 标准模板库(STL)学习指南之sort排序

    对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算法也基本固定下来,不需要你再去花费心思 ...

  5. STL中priority_queue小结

    (1)为了运用priority_queue,你必须包含头文件<queue>:#include<queue> (2)在头文件中priority_queue定义如下: namesp ...

  6. C++ STL之priority_queue

    STL中的priority_queue(优先队列)是一种会按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序的容器,不同优先级的情况下,top()上永远是最高优先级的数据,其底层采用的 ...

  7. STL 中priority_queue小结

    (1)为了运用priority_queue,你必须包含头文件<queue>:#include<queue>    (2)在头文件中priority_queue定义如下: nam ...

  8. STL之priority_queue

    下面以 long long 型队列介绍: Q.empty() // 判断队列是否为空 返回ture表示空 返回false表示空 bool Q.top() // 返回顶端元素的值 元素还在队列里 lon ...

  9. [转] C++的STL库,vector sort排序时间复杂度 及常见容器比较

    http://www.169it.com/article/3215620760.html http://www.cnblogs.com/sharpfeng/archive/2012/09/18/269 ...

随机推荐

  1. java.el.PropertyNotFoundException解决方法

    今天在开发中遇到了java.el.PropertyNotFoundException异常,检查JSP页面.Action.Bean.都没有发现错误 在网上搜了一下可能是我的bean不是一个标准的bean ...

  2. Spring起步(一)Building a RESTful Web Service

    http://spring.io/guides/gs/rest-service/ 先放链接. 这个很小很小的一个功课,我却遇到了各种各样的奇葩错误,折腾了两天才弄好. 想要开始的话,需要一些准备工具 ...

  3. poj 2689 大范围内素数筛选

    /** 给定一定范围求其内的素数 注意: **/ #include <iostream> #include <math.h> #include <cstring> ...

  4. querySelector $() getElementBy区别

    参考 http://stackoverflow.com/questions/14377590/queryselector-and-queryselectorall-vs-getelementsbycl ...

  5. MySQL 创建用户与修改密码

    创建用户的 3 方法: 1 .create user userName identifed by 'yourPassword'; 2. grant select on *.* to userName@ ...

  6. 阅读 - Code Complete 2 - 第33章 - 个人性格

    个人性格对于软件项目的开发到底有没有作用或者影响呢? 有的人急于完成自己的工作,当自己的代码遇到问题的时候,不去自己思考并调试而是直接求助于他人,有的人则是自己沉住气,耐心的从头到尾的研究找到错误的所 ...

  7. html5 note

    HTML5的特点 绘图支持 canvas 多媒体支持 video audio 离线应用 和 离线存储 新的语义化元素 article footer header nav section 表单增强 ca ...

  8. uber司机如何注册 uber司机详细注册流程

        注意:本文驾驶证行驶证图片为本人拍摄,请广大网友勿作它用 转载请修改! 详细的介绍注册优步uber司机端步骤; uber对司机的要求: 车辆为本地牌照 车龄在5年以内 裸车价格在10万以上 目 ...

  9. DropDownList为啥总是获取第一项的值???

    小菜: DropDownList控件绑定的数据,在获取数据时总是获取到第一项,很是郁闷,怎么回事,于是就各种想,都没有找到问题的原因. 请看下面的代码 前台代码: <asp:DropDownLi ...

  10. wamp+thinkphp环境配置

    下载wamp并安装,启动wamp,会出现一个小图标,然后点击它——>Start All Services.我点击之后是橙色,不是绿色.绿色代表成功启动.我是IIS占用了80端口的缘故,所以我修改 ...