はじめに
C++には便利なアルゴリズムが多数用意されています。
今回はその中のstd::any_ofについて紹介いたします。
C++で指定のコンテナ内のいずれかの要素が何らかの条件を満たすかどうかという判定はよく使うことだと思います。
このとき、すぐに思いつく判定方法としてはfor文でイテレータを進めていく、というものになるかと思います。
例えば以下のようなデータがあった場合、
std::vector v = { 5, 7, 9, 11, 1, 3 };
for文で10以上の要素が1つでもあるかどうかを判定しようとするとこのような形になります。
bool result = false;
for (const auto& x : v) {
if (x >= 10) {
result = true;
break;
}
}
しかし、今回紹介するstd::any_ofを使えば先程のfor文は以下のように置き換えることができます。
bool result = std::any_of(v.begin(), v.end(), [](int x) { return x >= 10; });
for文を使っていたときに比べて簡潔でわかりやすくなったと思います。
このstd::any_ofだけでなく他にもC++には便利なアルゴリズムが多数用意されています。
アルゴリズムが使える場面ではアルゴリズムを積極的に使うと可読性の高い、保守しやすいコードが書きやすくなるのでぜひ活用してください。

