C++ C+;中n个布尔变量枚举的最佳实践+;

C++ C+;中n个布尔变量枚举的最佳实践+;,c++,enumeration,brute-force,C++,Enumeration,Brute Force,我想列举1的所有可能值“但是,我想每次创建一个新的位集都会浪费一些时间,不是吗?”您应该只担心如果您的程序不满足性能要求,并且在分析它之后,您会发现这个循环是瓶颈。编译器可能足够聪明,可以在不创建任何对象的情况下将位集放入寄存器。std::array和std::next_permutation听起来像是一种可能的解决方案。位操作使用无符号类型,而不是int,以避免符号位出现各种问题或溢出。对于移位的左操作数,请使用所用类型的常量,例如1u表示无符号int。使用左移()。请确保对于32位无符号整数

我想列举1的所有可能值“但是,我想每次创建一个新的位集都会浪费一些时间,不是吗?”您应该只担心如果您的程序不满足性能要求,并且在分析它之后,您会发现这个循环是瓶颈。编译器可能足够聪明,可以在不创建任何对象的情况下将位集放入寄存器。
std::array
std::next_permutation
听起来像是一种可能的解决方案。位操作使用无符号类型,而不是
int
,以避免符号位出现各种问题或溢出。对于移位的左操作数,请使用所用类型的常量,例如
1u
表示
无符号int
。使用左移(
)。请确保对于32位无符号整数,您坚持使用
N
<32(对于
int
,您坚持使用
N
<31),或者
1u
(1>>N)
似乎不是很有用。您的位已经在
i
中设置好了。使用
位集
可以做什么,而不能使用
int
值?
for (int i=0;i<(1>>N);i++){
    std::bitset<32> T(i);
    ...
    some code using the bitset
    ...
}