如何将任意大小的 bitset 拆分为 64 位 bitsets 列表?

How to split bitset of any size into list of 64 bits bitsets?

我有一个任意大小的位集,我想知道从我的原始位集中获取 64 位位集列表的最快方法?

例如,从 bitset<10000> b('010001110 ...') 中,我想获得一个 64 位位集的列表,其中包含第一个第 64 位,然后是我原始位集中的下一个第 64 位,依此类推。

遗憾的是,没有任何功能可以直接从 STL 中有效地执行此操作。您必须一点一点地进行,或者您可以移动和屏蔽,如 this 答案中所述。

但是,感谢 this

You can use boost::dynamic_bitset, which can be converted to a range of "blocks" using boost::to_block_range.