重载<在集合set与优先队列priority_queue中的不同
来源:互联网 发布:多伦多打车软件 编辑:程序博客网 时间:2024/05/21 08:49
昨晚做了一个题目,试着用优先队列方法求解,根据题意重载了运算符<。结果不对?又试了在集合中使用重载的运算符<,没有问题。郁闷中……后来才发现在优先队列中条件要根据题意取反的。operator重载在结构集合与队列中是必要的,但也要注意区别。可以运行下面代码作个比较。
#pragma warning(disable : 4786)
#include<iostream>
#include<set>
#include<queue>
using namespace std;
const int N=10;
struct Msg
...{
int index;
int prior;
//< operator overload
//It is consistent in set,but opposite in priority_queue
bool operator <(Msg m) const
...{
if (prior==m.prior)
return index<m.index;
else
return prior<m.prior;
}
};
void run()
...{
set <Msg> s;
for(int i=1;i<=N;i++)
...{
Msg t;
t.index=i;
t.prior=(N-i)%3+1;
s.insert(t);
}
cout << "in set:";
for(set <Msg>::iterator it=s.begin();it!=s.end();it++)
cout << (*it).index << " " <<(*it).prior << endl;
priority_queue <Msg> q;
for(int j=1;j<=N;j++)
...{
Msg t;
t.index=j;
t.prior=(N-j)%3+1;
q.push(t);
}
cout << " in priority_queue: ";
while(q.empty()==false)
...{
Msg t=q.top();
cout << t.index << " " <<t.prior << endl;
q.pop();
}
}
int main()
...{
run();
return 0;
}
#include<iostream>
#include<set>
#include<queue>
using namespace std;
const int N=10;
struct Msg
...{
int index;
int prior;
//< operator overload
//It is consistent in set,but opposite in priority_queue
bool operator <(Msg m) const
...{
if (prior==m.prior)
return index<m.index;
else
return prior<m.prior;
}
};
void run()
...{
set <Msg> s;
for(int i=1;i<=N;i++)
...{
Msg t;
t.index=i;
t.prior=(N-i)%3+1;
s.insert(t);
}
cout << "in set:";
for(set <Msg>::iterator it=s.begin();it!=s.end();it++)
cout << (*it).index << " " <<(*it).prior << endl;
priority_queue <Msg> q;
for(int j=1;j<=N;j++)
...{
Msg t;
t.index=j;
t.prior=(N-j)%3+1;
q.push(t);
}
cout << " in priority_queue: ";
while(q.empty()==false)
...{
Msg t=q.top();
cout << t.index << " " <<t.prior << endl;
q.pop();
}
}
int main()
...{
run();
return 0;
}
- 重载<在集合set与优先队列priority_queue中的不同
- 优先队列priority_queue(重载)
- 队列与优先队列priority_queue 用法详解
- STL中的优先队列priority_queue的使用方法
- 浅谈C++ STL中的优先队列(priority_queue)
- queue容器与priority_queue(优先队列)
- 优先队列Priority_Queue
- 优先队列priority_queue
- 优先队列priority_queue
- STL priority_queue 优先队列
- STL priority_queue 优先队列
- priority_queue优先队列使用
- Priority_queue优先队列
- Priority_queue优先队列容器
- 优先队列(priority_queue)
- priority_queue 优先队列
- 优先队列priority_queue
- 优先队列priority_queue用法
- 自增减操作符探索
- 进程间通讯《三》
- VB 6.0中的RC4加密算法
- 怎样插入竖直线
- 毕业旅行·厦门·鼓浪屿
- 重载<在集合set与优先队列priority_queue中的不同
- ACE 的Hello world:: 最简单的ACE 程序!
- 推荐--jQuery使用手册(转摘)
- 数学名词中英文对照
- Cppunit 也有这么框架?哪个更好用一些呢?
- 用BEFORE触发器修正数据错误
- Genexus 如何实现获得数据库表中的最大值及多用户的控制
- [转载]本站arcims9.1+apache2.0+tomcat5.0.28安装配置方法
- IE7的CSS兼容性