2
我有一個函數來增加位串如下:如何遍歷所有的位串,一個0,2個0,一直到n 0s?
void increment(boost::dynamic_bitset<> &bitset)
{
for (int loop = 0; loop < bitset.size(); ++loop)
{
if ((bitset[loop] ^= 0x1) == 0x1)
{
break;
}
}
}
我想一個名爲相同的方式爲增量將被調用的函數,但不同的修改位串。每次調用它時,我都想獲得與前一個相同數量的0的下一個位串。
例如,如果位串的長度爲10,則前10個調用此函數將給一個位串帶一個0.然後,調用11到20將返回具有2個0的位串。我希望這個過程繼續下去,直到bitstring全部爲0。
我該如何設置這樣的功能?謝謝!
看起來像一個XY問題 – 2012-02-16 22:13:03
如果你的字符串只有長度10,你可以迭代整數範圍'[0,1 << 10)'並使用這些整數。 – 2012-02-16 22:18:46
@SethCarnegie好的,澄清問題:)我用一個比特串表示一組大對象,並且想對這個比特串的所有子集做一些測試。然而,我知道我感興趣的子集通常只有一些元素缺少,所以我想從所有被刪除的元素開始生成所有子集並向下工作。 – Jim 2012-02-16 22:20:16