使用std::bitset或相同大小的基本类型

Use a std::bitset or a fundamental type of the same size?

本文关键字:类型 std bitset 使用      更新时间:2023-10-16

我正在创建一个国际象棋求解器,并决定使用位板。一个标准的棋盘上有64个方格。这很好,因为64位操作系统的普及,单个位板可以放入单个寄存器中。

也就是说,使用std::bitset<64>及其功能或"相同"大小的unsigned long long的基本类型并手动执行位旋转是否存在根本差异(大小(内存和代码),速度,复杂性,内存使用等)?

可能是uint64_t。您将想要执行在std::bitset上不可用的操作,包括几乎所有的算术操作,位扫描,使用部分板作为数组的索引,以及SSE本质,如果您认真对待它的话。

例如(无论如何不是一个详尽的列表,只是一些简单的例子)在o^(o-2r)(和它的近亲)中,更高级的双曲线Quintessence,作为提取最低集位的一部分,等等。

你可以使用std::bitset,但你会把它转换回某种类型的整数。

相关文章: