经典 C++ 有时会为谓词算法选择 _if 后缀(而不是那些取值的),例如find_if
//有时它没有find
count_if
(例如,虽然它需要谓词,但没有 _if 后缀,并且没有值版本的算法)。count
any_of
any_of
据我所知,C++20filter
或ranges::any_of
没有值重载。
我浏览了 C++20 的整个 cppreference 页面,但一无所获,我认为这只是因为 C++20 范围库非常有限(只有少数视图)并且它与现有功能匹配(如果是any_of
)。
我最好的尝试是包装逻辑并给它一个新名称。
template <typename Range, typename Value>
static bool contains(const Range& range, const Value& value)
{
return std::ranges::find(range, value) != range.end();
}