boost dynamic_bitset的数组.如果设置了arr[0][0]位,则设置了arr[1][0]test().



动态bitset数组初始化如下

std::vector<boost::dynamic_bitset<>> v 
= std::vector<boost::dynamic_bitset<>>(8, boost::dynamic_bitset<>(2));

我设置了v[0].set(0),但v[1].test(0)返回true。如果我设置了v[0][0] = 1,其他数组的第0个索引位也自动视为设置。

我设置了v[0].set(0),但是v[1].test(0)返回false。

你所描述的不可能仅仅是给定/描述的代码:

Live On Coliru

#include <boost/dynamic_bitset/dynamic_bitset.hpp>
#include <iostream>
void print(auto caption, auto const& v) {
std::cout << caption << ":t";
for (auto& x : v)
std::cout << " " << x;
std::cout << "n";
}
int main() {
auto v = std::vector(8, boost::dynamic_bitset<>(2));
print("before", v);
v[0].set(0);
print("after", v);
}

打印

before:  00 00 00 00 00 00 00 00
after:   01 00 00 00 00 00 00 00

如果你仍然看到你描述的效果,这意味着

  • 你正在做其他事情
  • 周边代码有未定义行为,任何事情都可能发生

最新更新