我有一些可能暂时无法使用并且带有错误的输入。
struct sensorVal
{
bool available;
double error;
double val;
bool betterThan(const sensorVal* that) const;
}
我正在寻找一种算法,能够找到最佳的可用输入。我目前的最佳尝试是使用以下方式的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()
。
谢谢