【发布时间】:2016-11-15 01:43:44
【问题描述】:
如何将位数组转换为使用 c++ 快速设置? 每个实际的位数组有 750,000 位。
示例 1:
bitarray: 01011111
set: {0,1,2,3,4,5,7}
or set: {1,3,4,5,6,7}
示例 2:
bitarray: 0101 1111 0001 0001
set: {0,4,8,9,10,11,12,14}
or set: {1,3,4,5,6,7,11,15}
该集合是一个无符号 32 位整数 (uint32_t) 数组。这两种设置都可以接受。
位数组在内存中是连续的。 bitarray 的第一位与 simd 正确对齐。现在我正在使用带有 std::vector 的自定义内存分配器来保存位数组。位数组中每 1 位在内存中 1 位。
谢谢。
更新:
this so question does the reverse
How to define and work with an array of bits in C?
gmpy 使用gmp library 的scan1 函数。 scan1 似乎找到第一组,如维基百科here
【问题讨论】:
-
位数组的容器是什么?
-
到目前为止它是一个 std::vector
-
std::vector
?还是您将这些位存储在数字类型中? -
你卡在哪里了,你有什么尝试? 750,000 位只有大约 91.1 KB。预期的输出格式是什么?您是在要求括号中的逗号分隔的 ascii 值,如所示,还是其他?
-
现在是数字类型。 8 位打包为无符号 8 位整数。