检查 std::vector<bool> 是否仅包含真值

Ani*_*RNG 4 c++ stl boolean vector bitarray

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

Jon*_*Mee 5

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

cout << (find(foo.begin(), foo.end(), false) == foo.end()) << endl;
Run Code Online (Sandbox Code Playgroud)

或者如果你有你可以none_of

cout << none_of(cbegin(foo), cend(foo), logical_not<bool>()) << endl;
Run Code Online (Sandbox Code Playgroud)

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

bitset<13> foo;

cout << foo.all() << endl;
Run Code Online (Sandbox Code Playgroud)

Live Examples