2

我有一个数字作为布尔数组,但我需要对它进行算术运算,例如加减法和逻辑运算,例如AND使用其他类似的数字。如何在 C++ 中执行此操作而无需处理所有特定于布尔值的计算,并且简单地执行此操作。一个例子:

bool a[10];
bool b[10];
bool c[10];
c = a + b; 
4

2 回答 2

8

您可以使用std::bitset

#include <bitset>

std::bitset<10> a(4);
std::bitset<10> b("0000001000");

std::bitset c = a.to_ulong() + b.to_ulong();

//Etc.
//You can also use
a[0] = 4; a[1] = 5; //to initialize / access
于 2013-01-07T22:08:34.223 回答
1

std::transform可以对来自两个容器的元素对执行二元运算,并将结果放入第三个容器。您可以使用std::logical_and, 并std::logical_or获得所需的结果:

transform(a, a+10,
          b, b+10,
          c, logical_and<bool>());

transform(a, a+10,
          b, b+10,
          c, logical_or<bool>());
于 2013-01-07T22:27:04.680 回答