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

标签 c++ vector stl boolean bitarray

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

最佳答案

给定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 '一个 all 方法:

bitset<13> foo;

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

Live Examples

关于c++ - 检查 std::vector<bool> 是否仅由真值组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37842178/

相关文章:

r - 在 R 中,如何用等于相同宽度的值向量替换多列中的值?

c++ - 如何打印出 vector 的内容?

c++ - 免费(): invalid pointer for vector<vec4i> c++

c++ - std::search 提取当前迭代器并使用 std::advance 向前移动迭代器

c++ - C++ 中的 vector 和 map

java - 如何在 C++ 中读取 java 对象?

c++ - Intellisense 不使用模板 VS2012 终极 C++

c++ - 对象类型如何在编译时未知?

c++ - 解析命令行参数 c++ 时的奇怪行为

c++ - 为什么在使用STL列表时不能使用此回文功能?