我试图将64位bitset数组中的所有元素都设置为0. std::bitset<64> map[100];
我知道我可以使用循环迭代所有元素并像这样调用.unset()。
int i;
for( i = 0; i< 100 ; i++){
map[i].unset();
}
但是,我想知道是否有适当的&#34;这样做的方式。
std::bitset<64> map[100] = {};
可以吗?
答案 0 :(得分:6)
std::bitset
默认构造函数将所有位初始化为零,因此除了声明数组之外,您不需要做任何其他操作。
std::bitset<64> map[100]; // each bitset has all 64 bits set to 0
要将所有位设置为1,我将使用bitset::set
成员函数,该函数具有将所有位设置为1的重载。将其与for_each
组合以在每个数组元素上调用成员函数。
std::for_each(std::begin(map), std::end(map),
[](std::bitset<64>& m) { m.set(); });
另一个解决方案是初始化每个数组成员,但这对于100个元素数组来说相当繁琐;。
std::bitset<64> map[100] = {0xFFFFFFFFFFFFFFFFULL, ... 99 times more};
答案 1 :(得分:1)
bitset
default constructor
将所有元素初始化为0
。我想说初始化数组的最好方法是使用
std::bitset<64> map[100] = {};
因为默认启动所有元素。它也干净,清晰,简洁。
答案 2 :(得分:-2)
此外,在您的代码中,您可以认为0是1,反之亦然(只改变逻辑)。但只有你能够做到这一点。