古典的な C++ は、(値を取るものに対して) 述語アルゴリズムの _if サフィックスを選択することがあります (例: find_if
/ find
count_if
/count
など)。また、そうでない場合もあります(たとえばany_of
、述語を取っても _if サフィックスがなく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();
}