在线等待,如何把类插入到优先队列...........................

zhizhiping 2004-12-08 01:22:29
问题是:如何根据我定义的hNode里的value属性来做为优先队列的权值?
以下代码在push的时候老是报错,请教.有类似的代码的恳请show一下.
代码如下:
#include <iostream>
#include <queue>
#include <deque>
#include <vector>
#include <functional>
using namespace std;

class hNode
{
public:
friend bool operator > (hNode n1,hNode n2);
hNode(string d="",int i=0,hNode* l = NULL,hNode* r =NULL):left(l),right(r),data(d),value(i){}
hNode* left;
hNode* right;
string data; //储存的字符串
int value; //字符串出现的次数
};
bool operator > (hNode n1,hNode n2)
{
return n1.value > n2.value;
}
void main(void)
{
std::priority_queue<hNode> q;

hNode r;

r.value = 22;
}
...全文
94 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhizhiping 2004-12-08
  • 打赏
  • 举报
回复
谢了,以下是我的最终代码.
#include <iostream>
#include <queue>
#include <deque>
#include <vector>
#include <functional>
using namespace std;



class hNode
{
public:

hNode(string d="",int i=0,hNode* l = NULL,hNode* r =NULL):left(l),right(r),data(d),value(i){}
hNode* left;
hNode* right;
string data; //储存的字符串
int value; //字符串出现的次数
};



struct phNodeComp ///使用这个来判断.
{
bool operator () (const hNode*& left,const hNode*& right) const
{
return left->value < right->value;
}
};


void main(void)
{
hNode* p1 = NULL;
hNode* p2 = NULL;
hNode* r = NULL;
hNode* r2 = NULL;
hNode* r3 = NULL;
hNode* r4 = NULL;
r = new hNode;
r2 = new hNode;
r->value = 10;
r2->value = 9;
r3 = new hNode;
r4 = new hNode;
r3->value = 22;
r4->value = 2;
// r2->value = 9;
priority_queue<hNode*,vector<hNode*>,phNodeComp > pq;

pq.push(r);pq.push(r2);pq.push(r3);pq.push(r4);

//pq.pop();
p1 = pq.top();
cout<<endl<<p1->value<<endl;
}
zhizhiping 2004-12-08
  • 打赏
  • 举报
回复
ok,谢了,很高兴认识你
yjh1982 2004-12-08
  • 打赏
  • 举报
回复
不要用friend
作成成员函数
zhizhiping 2004-12-08
  • 打赏
  • 举报
回复
结果还是不行,仍然抛出错误!
e:\software\ide\vc6\vc98\include\functional(86) : error C2784: 'bool __cdecl std::operator <(const class std::vector<_Ty,_A> &,const class std::vector<_Ty,_A> &)' : could not deduce template argument for 'const class std::vector<_Ty,_A> &' from 'con
st class hNode'
zhizhiping 2004-12-08
  • 打赏
  • 举报
回复
为什么会这样.是原来的没有operator>的方法吗?
zhizhiping 2004-12-08
  • 打赏
  • 举报
回复
好象可以啊.
yjh1982 2004-12-08
  • 打赏
  • 举报
回复
实现operator<

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧