我正在尝试将 64 位位集数组中的所有元素设置为 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
要将所有位设置为 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};
关于c++ - 在 C++ 中初始化一个 std::bitset 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23189520/