在C++ 11中对数组中所有元素的OR/AND成员的优雅方式?

sta*_*yli 2 c++ c++11

我有一个

struct A {
   bool field;
};
Run Code Online (Sandbox Code Playgroud)

所以对于一个数组A a[32],我想检查这个数组中的所有元素是否都field为真.有什么好办法呢?我可以考虑使用std::accumulate.这是C++ 11中最好的方法吗?

Ðаn*_*Ðаn 5

将使用"优雅"的C++方式std::bitset.

std::bitset<32> a;
Run Code Online (Sandbox Code Playgroud)

成员函数,然后可以用它来测试是否:

  • 所有位都设置为true, a.all()
  • 任何位都设置为true, a.any()
  • 没有任何位设置为true, a.none()