2016-06-15 64 views
0

的我需要具有低複雜度的有效方法來改變位集的範圍內的比特的值的值:最有效的方法來改變在STD的範圍內的位的::位集

bitset<1000000> bs; 

和例如,我需要將值從100到500設置爲TRUE。

在最低複雜度下完成此操作的最快方法是什麼?

使用循環將不能滿足。

+1

我投票結束這個問題作爲題外話,因爲這不是一個代碼寫作服務,請顯示你的努力 – EdChum

+0

但我不是要求代碼寫! –

+0

@EbramShehata可能你可以提供一些嘗試,看看哪個更有效。 – Mine

回答

0

一個普通的for循環是最簡單,最快捷的方式:

std::bitset<1000000> bs; 

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

不幸的是:

同時認爲,std::bitset不附帶iterators,所以它不能在<algorithm>庫的功能使用。

如果性能真的很重要,你可以考慮專門實施。

相關問題