【发布时间】:2014-10-05 10:58:05
【问题描述】:
我不知道如何实现priority_queue,在比较对象整数字段时,很清楚。 例如
bool operator()(const Toast &t1, const Toast &t2) const
{
int t1value = t1.bread * 1000 + t1.butter;
int t2value = t2.bread * 1000 + t2.butter;
return t1value < t2value;
}
这将根据值将对象放入堆中。
问题是如何根据布尔字段比较对象?如何根据布尔类型存储多个对象?
例如 :
vip=true,notvip=false;
Vip1 , notVip2, Vip3.
结果应该是:Vip1,Vip3,notVip2;
你能给我一个想法吗?
【问题讨论】:
-
我建议你阅读例如this
std::priority_queuereference,它包含指向比较函数所需内容的确切定义的链接。 -
您是否有两个代表完全相反的属性?如果是这样,请先将其减少为一个属性。然后,使用 std::less
比较属性,即将包含对象的比较委托给内部相应字段的比较。 -
请澄清您的问题。这个vip僵硬没有任何意义。
-
ok 如果我这样做 if(c1.status == true && c2.status== false ) return c1.status>c2.status; ,我会得到一个错误,它不会存储我的对象;我需要先存储真然后存储假;
-
再一次,你的问题毫无意义。什么是“商店”?这意味着什么?什么是“c1”,什么是“c2”?您发布的示例代码没有任何名为“c1”或“c2”的内容。每次你试图解释你的问题时,你都会抛出一些以前没有提到过的新东西。从别人那里得到正确答案的诀窍是正确地解释自己。
标签: c++ stl priority-queue