ブール値のコンテナ (例は ) が与えられた場合、すべての値が(「and」) であるか、少なくとも 1 つの値が(「or」) である場合に短絡評価std::vector<bool>
で返す標準関数はありますか?true
true
true
true
今朝、 www.cplusplus.com を調べましたが、それに近いものは見つかりませんでした。
すべての値が true (「and」) の場合に true を返す標準関数はありますか
std::all_of(vec.begin(), vec.end(), [](bool x) { return x; } )
または、少なくとも 1 つの値が true の場合は true (「または」)
std::any_of(vec.begin(), vec.end(), [](bool x) { return x; } )
短絡評価で?
ラムダに print ステートメントを挿入したところです。はい、両方の関数がショートサーキットを実行します。
さまざまなコンテナー タイプの汎用アルゴリズムが必要ない場合は...
短絡評価を探しているので、std::valarray にチャンスを与えることができます。Igorが述べたように使用and
できvalarray::min() == true
ますor
。std::find
コンパイル時に格納する要素の数がわかっている場合は、std::bitset を使用することもできます。
bitset<100> container();
//... fill bitset
bool or = container.any();
bool and = container.count() == container.size();