c++ - 在 C++ 中初始化一个 std::bitset 数组

标签 c++ arrays c++11 bitset

我正在尝试将 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(); });

Live demo

另一种解决方案是初始化每个数组成员,但这对于 100 个元素的数组来说相当乏味;.

std::bitset<64> map[100] = {0xFFFFFFFFFFFFFFFFULL, ... 99 times more};

关于c++ - 在 C++ 中初始化一个 std::bitset 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23189520/

相关文章:

c++ - std::set 中的 unique_ptr 无法找到 operator< 即使它在那里

c++ - 仿函数 : templated struct vs templated operator()

java - 用 dat 文件填充 arrayList

c++ - 没有参数列表时模板名称 ‘boost::asio::strand’ 的使用无效

javascript - 无法为 JavaScript 中的对象变量赋值

Java 遍历数组

c++ - 用原子做饱和运算

c++ - 如何在 Windows Phone 上使用 c++/cx 获得加密安全随机性?

c++ - 在多个键下将项目存储在 map 中

c++ - 将 std::unique_ptr 插入 boost:ptr_map