如何在 C++ 中管理位/二进制?

Agu*_*ush 4 c++ text boolean input char

我需要做的是打开一个包含 0 和 1 的文本文件,以查找文件中各列之间的模式。

所以我的第一个想法是将每一列解析成一个大的 bool 数组,然后在列之间(现在在数组中)进行逻辑处理。直到我发现 bool 的大小实际上是一个字节而不是一点,所以我会浪费 1/8 的内存,将每个值分配给一个 bool。

它甚至与 800x800 值的网格相关吗?处理这个问题的最佳方法是什么?如果答案复杂,我将不胜感激

MOn*_*DaR 5

您可以使用std::bitset或 Boosts dynamic_bitset提供不同的方法来帮助您管理您的位。

例如,它们支持从其他默认类型(如 int 或 char)创建位集的构造函数。您还可以将 bitset 导出为 ulong 或字符串(然后可以再次将其转换为 bitset 等)

我曾经问过连接那些,这在性能上是不可能做到的。但也许您也可以使用该问题中的信息。