【发布时间】:2010-09-30 23:07:01
【问题描述】:
我正在实现一个游戏。我有一个状态树和一个基于 set 的优先级队列,可以根据成本对状态进行排序。为此,我将
struct DereferenceCompareState :
public std::binary_function<State*, State*, bool>
{
bool operator()(const State* lhs, const State* rhs) const
{
verbose6("comparing " << lhs->getCost() << " with " << rhs->getCost());
return lhs->getCost() < rhs->getCost();
}
};
现在,我想消除成本高于某个数字的状态,但为此,我必须创建一个具有我想要的成本的虚拟状态,并在集合上做一个 upper_bound。有没有办法通过例如添加到上面的结构来定义一个适用于状态与整数比较的运算符?谢谢
【问题讨论】:
-
我最终定义了一个 CostProvider 基类,它也可以用整数构造。将集合类型更改为 CostProvider。所以这很快,但我不知道有多好。谢谢!
标签: c++ templates stl polymorphism compare