繁体   English   中英

在C ++中初始化std :: bitset数组

[英]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};

bitsetdefault constructor将所有元素初始化为0 我会说初始化数组的最好方法是

std::bitset<64> map[100] = {};

因为该默认值会启动所有元素。 它也干净,清晰,简洁。

另外,在您的代码中,您可能会认为0是1,反之亦然(仅更改逻辑)。 但前提是您能够做到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM