2

古典的な 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();
}
4

1 に答える 1