更改std :: bitset

时间:2016-06-15 08:19:21

标签: c++ performance bits bitset std-bitset

我需要一种低复杂度的有效方法来更改位集中位数范围的值:

bitset<1000000> bs;

我需要将值100到500设置为TRUE,例如。

以最低的复杂度实现这一目标的最快方法是什么?

使用循环肯定不够。

1 个答案:

答案 0 :(得分:1)

普通的for循环是最简单,最快捷的方式:

std::bitset<1000000> bs;

for (unsigned i = start, stop = start + n; i != stop; ++i)
  bs.set(i);

不幸的是:

另请注意,std::bitset未附带iterators,因此无法与<algorithm>库中的函数一起使用。

如果性能真的很重要,您可以考虑实施 ad-hoc