C++ 如何用一个0,两个0遍历所有的位字符串,一直迭代到n0?

C++ 如何用一个0,两个0遍历所有的位字符串,一直迭代到n0?,c++,boost,bit-manipulation,boost-dynamic-bitset,C++,Boost,Bit Manipulation,Boost Dynamic Bitset,我有一个按如下方式递增位字符串的函数: void increment(boost::dynamic_bitset<> &bitset) { for (int loop = 0; loop < bitset.size(); ++loop) { if ((bitset[loop] ^= 0x1) == 0x1) { break; } } } void增量(boost::d

我有一个按如下方式递增位字符串的函数:

void increment(boost::dynamic_bitset<> &bitset)
{   
    for (int loop = 0; loop < bitset.size(); ++loop)
    {
        if ((bitset[loop] ^= 0x1) == 0x1)
        {
            break;
        }
    }
}
void增量(boost::dynamic_位集和位集)
{   
for(int-loop=0;loop
我想要一个函数,它的调用方式与增量调用方式相同,但修改位字符串的方式不同。每次调用它时,我都希望得到下一个0数与前一个0数相同的位字符串

例如,如果位字符串的长度为10,则对该函数的前10次调用将给出一个具有单个0的位字符串。然后,调用11到20将返回带有20的位字符串。我希望这种情况一直持续下去,直到位字符串都是0


我如何设置这样的功能?谢谢

您可以在第1.24.3章“班次顺序”中找到答案。您必须将整数更改为位集并翻转值。当与位集一起使用时,这种实现可能不是最佳的。

您可以在第1.24.3章“移位顺序”中找到答案。您必须将整数更改为位集并翻转值。当与位集一起使用时,此实现可能不是最佳的。

看起来像XY问题如果字符串的长度只有10,则可以在整数范围内迭代
[0,1@SethCarnegie好的,对问题的澄清:)我用一个位字符串表示一组大型对象,并希望对该位字符串的所有子集进行一些测试。但是,我知道我感兴趣的子集通常只缺少集合中的几个元素,因此我希望仅从一个el开始生成所有子集“删除并向下工作。@KerrekSB,用于说明目的。位字符串通常长度至少为400。有9个长度为10的位字符串带有一个零,36个位字符串带有两个零。有相当多的长度为400的位字符串带有两个零。这是二项式系数。看起来像XY问题。”如果字符串的长度只有10,则只需在整数范围内迭代
[0,1@SethCarnegie好的,对问题的澄清:)我用一个位字符串表示一组大型对象,并希望对该位字符串的所有子集进行一些测试。但是,我知道我感兴趣的子集通常只缺少集合中的几个元素,因此我希望仅从一个el开始生成所有子集“删除并向下工作。@KerrekSB,用于说明目的。位字符串通常长度至少为400。有9个长度为10的位字符串带有一个零,36个位字符串带有两个零。有相当多的长度为400的位字符串带有两个零。这是二项式系数。”。