重载

摘要:
优先级队列区别于普通队列的一点是:优先级队列如果插入的节点是结构体类型,则要在结构体中重载比较操作符函数。

优先级队列区别于普通队列的一点是:优先级队列如果插入的节点是结构体类型,则要在结构体中重载比较操作符函数。

优先队列默认的que插入是从大到小,所以在结构体中要重载<,


struct P
{
    int pos;//position
    int dis;//distance
    friend bool operator <(P a,P b)
    {
        if(a.pos==b.pos)
            return a.dis>b.dis;//从小到大排
        return a.pos > b.pos;
    }
};
struct P
{
    int pos;//position
    int dis;//distance
};
bool operator <(P a,P b)
{
    if(a.pos==b.pos)
        return a.dis>b.dis;
    return a.pos > b.pos;
}

friend说明这个函数一个友元函数,可以访问私有成员,只能在类内,不能在类外再加。

使用:

#include<queue>

queue<P> que;

免责声明:文章转载自《重载》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇黄聪:mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法Python的魔法函数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

unordered_map的哈希HASH重载——举例unordered_map与pair联合使用

有些时候,为了图省力,我们没准会这样的调用一个函数 unordered_map< pair<int, int>, int > mp; 但是很显然的是,这样的写法是会报错的,因为pair还没有HASH键值。 error: call to implicitly-deleted default constructor of 'std::...

介绍 C# 中的运算符重载 .

介绍 C# 中的运算符重载周融,2007 年 5 月(C) 2001-2007 保留所有权利。 重载是面向对象中的一个重要概念,它是对象多态性的一种不完全体现,人们通常所说的重载,往往指的是函数的重载。本文向读者介绍一种新的重载模型——运算符重载。 在本文中的内容:1、为什么需要运算符重载2、C# 运算符重载决策示例3、C# 运算符重载一览表4、结论 为什...

android自定义控件及自定义组合控件

一、构建自定义控件 构建自定义组件 Android中,你的应用程序程序与View类组件有着一种固定的联系,例如按钮(Button)、文本框(TextView),可编辑文本框(EditText),列表框(ListView),复选框(CheckBox),单选框(RadioButton),滚动条(Gallery),微调器(Spinner), 等等,还有一些比较先...

【转载】.net题目 —— 加了一些东西

转自:http://www.cnblogs.com/tuyile006/archive/2007/03/20/681154.html 1:a=10,b=15,在不用第三方变量的前提下,把a,b的值互换2:已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组3:请简述面向对象的多态的特性及意义!4:sess...

QT父子窗口事件传递与事件过滤器(讲了一些原理,比较清楚)

处理监控系统的时候遇到问题,在MainWidget中创建多个子Widget的时候,原意是想鼠标点击先让MainWidget截获处理后再分派给子Widget去处理,但调试后发现如果子Widget重新实现了事件方法,就直接处理掉事件了,没有进到MainWidget的处理方法中去,如果子Widget没有accept或ignore该事件,则该事件就会被传递给其父亲...

Effective Modern C++:05右值引用、移动语义和完美转发

         移动语义使得编译器得以使用成本较低的移动操作,来代替成本较高的复制操作;完美转发使得人们可以撰写接收任意实参的函数模板,并将其转发到目标函数,目标函数会接收到与转发函数所接收到的完全相同的实参。右值引用是将这两个不相关的语言特性连接起来的底层语言机制,正是它使得移动语义和完美转发成了可能。 23:理解std::move和std::forw...