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 に答える