[英]Initialize an array of std::bitset in C++
我试图将64位位数组中的所有元素设置为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};
bitset
的default constructor
将所有元素初始化为0
。 我会说初始化数组的最好方法是
std::bitset<64> map[100] = {};
因为该默认值会启动所有元素。 它也干净,清晰,简洁。
另外,在您的代码中,您可能会认为0是1,反之亦然(仅更改逻辑)。 但前提是您能够做到。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.