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