我有一些输入可能暂时不可用,并有一个错误关联。算法找到可能返回没有的最佳匹配
我正在寻找一种算法,会找到最好的可用输入。我最好的尝试,到目前为止是使用min_element
如下:
bool sensorVal::betterThan(const sensorVal& that) const
{
if (available)
{
if (that.available)
return (error < that.error);
return true;
}
return false;
}
bool betterThan(const sensorVal& lhs, const sensorVal& rhs)
{
return lhs.betterThan(rhs);
}
std::vector<sensorVal>::const_iterator
find_best(const std::vector<sensorVal>& inputs)
{
std::vector<sensorVal>::const_iterator best;
best = min_element(inputs.begin(), inputs.end(), betterThan);
if (best->available)
return best;
return inputs.end();
}
这工作时,所有的输入都标记为不可用,除了罚款。在这种情况下,最好设置为inputs.begin()
,然后我需要测试它是否可用。
我宁愿将最佳设置为inputs.end()
,这已经在我的代码中得到了满足。
是否有一个现有的算法可以找到最佳匹配,可以返回没有合适的成员?或者是对我的测试进行改写的一种方式,以便最佳设置为inputs.end()
。
谢谢
这种情况下,具有更高阶的函数(特别是[filter](http://en.wikipedia.org/wiki/Filter_%28higher-order_function%29))会很方便。但是,我无法在STL中找到类似的东西。类似[remove-if](http://www.cplusplus.com/reference/algorithm/remove_if/)可能会有用。 – abeln
它看起来像我有你的工作代码,只需要检查一个额外的时间。这真的是一个问题吗? – btilly
@btilly是的,我有一些工作。我想知道是否有一个算法已经做到了我想要的。 – DanS