我有一个数字作为bool数组但是我需要对其进行算术运算,例如加法和减法以及AND
之类的逻辑运算,以及其他与之类似的数字。如何在C ++中执行此操作而无需处理所有特定于布尔值的计算,并且可以简单地完成。
一个例子:
bool a[10];
bool b[10];
bool c[10];
c = a + b;
答案 0 :(得分: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
答案 1 :(得分: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>());