我正在尝试将64位bitset数组中的所有元素设置为0。std::bitset<64> map[100];
我知道可以使用循环迭代所有元素并调用.unset()来实现,如下所示。
int i;
for( i = 0; i< 100 ; i++){
map[i].unset();
}
然而,我想知道是否有一种“适当”的方法来实现它。
std::bitset<64> map[100] = {};
可以吗?
std::bitset
的默认构造函数将所有位都初始化为零,因此您无需进行额外操作,只需声明数组即可。
std::bitset<64> map[100]; // each bitset has all 64 bits set to 0
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};
bitset
的默认构造函数会将所有元素初始化为0
。我认为初始化数组最好的方式是使用
std::bitset<64> map[100] = {};
std::bitset<64> map[100] = {1};
? - vincentleestmap[0][0]
设置为 1
。其他都设置为 0
。 - R Sahu
std::fill(std::begin(map), std::end(map), -1);
。 - Brian Rodriguez