优先队列prior_queue 自定义比较?

karlfixed 2009-04-11 10:38:33
在结构体中
struct Node
{
int cost;//cost越大排前面
int test;
};
我想在priority_queue中使用结构体,然后按int cost的大小为优先级,请问如何使用设置?
好像要重载操作符?
...全文
231 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
karlfixed 2009-04-11
  • 打赏
  • 举报
回复
以上都不对,不过 xuhb95083023 重载写对了
  • 打赏
  • 举报
回复
参考map结构体做键值的做法。
http://www.cnblogs.com/kevintian/articles/1277700.html
xuhb95083023 2009-04-11
  • 打赏
  • 举报
回复
汗,上面的错了,试试这个



// 函数对象
struct node_comp{

bool operator()(const Node& lhs, const Node& rhs) const {
return lhs.cost > rhs.cost;
}

};

// 声明
std::prior_queue<Node, node_comp> my_prior_queue;

xuhb95083023 2009-04-11
  • 打赏
  • 举报
回复
应该是这样,代码没验证过



// 函数对象
struct node_comp: public std::binary<Node, Node, bool>
{
bool operator<(const Node& lhs, const Node& rhs) const {
return lhs.cost > rhs.cost;
}
};

// 声明
std::prior_queue<Node, node_comp> my_prior_queue;

mengde007 2009-04-11
  • 打赏
  • 举报
回复
个人觉得还是multimap好
multimap<int,Node>;int就对应cost吧

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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