我有一个函数来增加一个位串,如下所示:
void increment(boost::dynamic_bitset<> &bitset)
{
for (int loop = 0; loop < bitset.size(); ++loop)
{
if ((bitset[loop] ^= 0x1) == 0x1)
{
break;
}
}
}
我想要一个以调用increment的方式调用的函数,但是以不同方式修改bitstring。每次调用它时,我都想获得与前一个相同数量的0的下一个位串。
例如,如果bitstring的长度为10,则对此函数的前10次调用将给出一个带有单个0的位串。然后,调用11到20将返回带有2 0的位串。我希望这一直一直向下,直到bitstring为全0。
我怎样才能设置这样的功能?谢谢!
答案 0 :(得分:0)
您可以在Matters Computational,第1.24.3章“班次顺序”中找到答案。您必须将整数更改为位集并翻转值。当与位集一起使用时,这种实现可能不是最佳的。