动态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
如果你仍然看到你描述的效果,这意味着
- 你正在做其他事情
- 周边代码有未定义行为,任何事情都可能发生