我有一个增加位串的功能,如下所示:
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的位串。我希望它一直向下直到位串全为0。
如何设置这样的功能?谢谢!
最佳答案
您可以在Matters Computational第1.24.3章“类次”中找到答案。您必须将整数更改为位集并翻转值。与位集一起使用时,此实现可能不是最佳的。
关于c++ - 如何用一个0,两个0迭代所有位串,一直到n 0s?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9319859/