检查 std::vector<bool> 是否仅由真值组成

Check whether std::vector<bool> is comprised of only true values

确定包含布尔值(通常优化为位数组)的向量是否仅包含真值的最快方法是什么?对于小向量,我认为将向量与另一个只存储真值的向量进行比较可能不是一个坏主意(假设我们知道两个向量的大小)。

给定 const vector<bool> foo(13) 使用 find:

cout << (find(foo.begin(), foo.end(), false) == foo.end()) << endl;

或者如果你有 you can none_of:

cout << none_of(cbegin(foo), cend(foo), logical_not<bool>()) << endl;

或者,如果您在编译时知道 vector 的大小,您可以使用 bitset'a all 方法:

bitset<13> foo;

cout << foo.all() << endl;

Live Examples