假设我想在0000
- 1111
范围内迭代所有位序列(缺少更好的名称)。当我想将其扩展到24位时,我无法事先简单地计算所有可能的排列;我需要动态计算它们。
如何使用yield
或装饰while循环等方式即时生成排列(如InputIterator
的Python生成器)?
答案 0 :(得分:3)
除非我误解,否则你可以使用一个int(无论如何都将它存储在它的核心位置),只是将你的循环绑定到迭代到空间允许的最宽的int(在这种情况下24位)。从0开始并添加连续的将隐式地逐步执行每个可能的位组合。
无需预先计算或存储任何内容。这是一个4位的例子:
for(unsigned long int cnt = 0; cnt < 16; cnt++) DoSomething(cnt);
在这种情况下,DoSomething(const unsigned long int&amp;)可以简单地映射这些位并执行您正在寻找的操作。
如果您的实现支持它,请使用uint_32t类型以获得明确且准确的宽度。