C++ 为什么boost::dynamic_bitset是一个模板?

C++ 为什么boost::dynamic_bitset是一个模板?,c++,boost,boost-dynamic-bitset,C++,Boost,Boost Dynamic Bitset,我以前使用过boost::dynamic_bitset作为boost::dynamic_bitset,但没有真正考虑它被模板化的原因 虽然我能理解为什么std::bitset是模板化的(模板类型用于指定位集的大小),但我现在遇到了一些boost::dynamic_bitset形式的代码,我不明白模板类型的意义 boost::dynamic_位集与boost::dynamic_位集有何不同?在任何情况下,是否应将其中一个用于另一个?来自: 模板 类动态_位集{/。。。 dynamic_bitse

我以前使用过
boost::dynamic_bitset
作为
boost::dynamic_bitset
,但没有真正考虑它被模板化的原因

虽然我能理解为什么
std::bitset
是模板化的(模板类型用于指定位集的大小),但我现在遇到了一些
boost::dynamic_bitset
形式的代码,我不明白模板类型的意义

boost::dynamic_位集
boost::dynamic_位集
有何不同?在任何情况下,是否应将其中一个用于另一个?

来自:

模板
类动态_位集{/。。。
dynamic_bitset
作为模板的最明显的优点是,您可以指定自己的
分配器类型。这在很多情况下都很有用(性能、内存连续性、调试).
dynamic_位集
通过
分配器
进行分配,如果其内部存储需要增加以容纳更多位


此外,它允许您指定一个
类型,这是用于表示一组位的底层原语。您可能希望根据所处的平台或愿意使用的内存量更改块类型(例如,如果不是所有位都有效,则较小的
类型将减少内存浪费).

你读过吗?@tobi303我读过,但看不出
Block
在这个上下文中是什么意思,也看不出为什么有人会使用它。所以在这种情况下,
unsigned char
意味着它在内部使用一个
unsigned char
数组来存储位?但除了内存使用之外,这与外部没有任何区别,对吗?@user2891462:它对于与现有缓冲区的互操作性也很有用。有关示例,请参见
boost::to_block_range
template <typename Block, typename Allocator>
class dynamic_bitset { // ...