1

我需要一种复杂度低的有效方法来更改 bitset 中一系列位的值:

bitset<1000000> bs;

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

以最低复杂性完成此任务的最快方法是什么?

使用循环肯定是不够的。

4

1 回答 1

1

普通的 for 循环是最简单、最快的方法:

std::bitset<1000000> bs;

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

很遗憾:

还要考虑iteratorsstd::bitset不附带,因此它不能与库中的函数一起使用。<algorithm>

如果性能真的很重要,您可以考虑临时实施。

于 2016-06-15T09:58:41.550 回答