c++ - 优化二进制增量循环

标签 c++ optimization

今天早些时候,我问了一个关于获取所有可能组合的问题,我得到了一个关于使用二进制循环的很好提示,经过一些思考后,我想出了以下 C++ 代码:

    vector<bool>binary(size,0);

bool filled=false;
while(filled==false)
{

    bool setdigit=true;
    for(int k=0;k<size;k++)
    {
        if(setdigit==true)
        {
            if(binary[k]==false) 
            {
                    binary[k]=true;
                    setdigit=false;
            }
            else //when the digit is already true
            {
                binary[k]=false;
            }
        }
    }
    for(int i=0;i<size;i++)
    {
        if(binary[i]==false) 
            {
                filled=false;
                break;
        }
        else filled=true;
    }
}

代码似乎可以运行,但是测试二进制增量是否完成的方法编码非常糟糕,我应该如何改进退出条件甚至循环过程?

最佳答案

伪代码:

for (i=0;i<2^size;i++)
   binary = std::bitset(i);  /* the bits of i are the bits you are looking for */

关于c++ - 优化二进制增量循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24129078/

相关文章:

c++:尝试使用const成员构造类

python - 有没有更快的方法来查找两个数组(Python)中的匹配特征?

c++ - 编译器指令重新排序

mysql - 这个查询有什么问题? EXPLAIN 对我来说很好

c++ - 外部 dll 中缺少 Qt 信号

c++ - 如何在 OpenGL 中从一个 VBO 绑定(bind)多个 IBO

c++ - C++中的模板工厂模式

c++ - Py ILM Base 无法在 Windows 上编译

Python:帮助优化代码

c# - Windows API 似乎比 BinaryWriter 快得多 - 我的测试正确吗?