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

时间:2016-06-15 17:39:12

标签: c++ vector stl boolean bitarray

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

1 个答案:

答案 0 :(得分:4)

鉴于const vector<bool> foo(13)使用find

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

如果您有,可以none_of

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

或者,如果您在编译时知道vector的大小,则可以使用bitset&#39; all方法:

bitset<13> foo;

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

Live Examples