是否有一个std::bitset<>
在实例化时可以动态调整大小的方便模拟,但避免了所需的额外分配boost::dynamic_bitset<>
您可以通过执行以下操作在 C 中轻松创建动态大小的位集:
typedef struct { node_t node; block_t bits[0]; } node_bitset_t;
p = (node_bitset_t *)malloc( (sizeof(node_t) + sizeof(block_t)*blocks) * array_size);
仅当您在编译时std::vector<std::bitset<bits>>
知道时才能执行此操作。bits
如果你使用std::vector<boost::dynamic_bitset<>>
,那么你会看到一个额外的分配器调用。是否有一种折衷方案可以实现上述 C 代码的平衡?
例如,您可能有一些用于 std::vector<...> 的自定义分配器,它在每个之后留下一些额外的空间boost::dynamic_bitset<>
并在那里分配m_block
,尽管这可能仍然会花费您的指针m_block
。