为什么boost :: dynamic_bitset模板

Why is boost::dynamic_bitset a template?

本文关键字:bitset 模板 dynamic boost 为什么      更新时间:2023-10-16

我之前曾在 boost::dynamic_bitset<>之前使用 boost::dynamic_bitset,而没有真正考虑为什么它被模板。

尽管我能理解为什么std::bitset被模板(模板类型用于指定位置的大小),但我现在遇到了表单boost::dynamic_bitset<unsigned char>的某些代码,我不知道模板类型的点是什么。

boost::dynamic_bitset<unsigned char>boost::dynamic_bitset<>有何不同?在任何情况下都应使用一个吗?

来自文档:

template <typename Block, typename Allocator>
class dynamic_bitset { // ...

dynamic_bitset是模板的最明显优势是您可以指定自己的Allocator类型。这对于多种原因(性能,内存连续性,调试)都可以有用。dynamic_bitset确实通过Allocator分配其内部存储以容纳更多位。

此外,它允许您指定Block类型,该类型是用于表示一堆位的基础原始类型。您可能需要根据所在平台或愿意使用的内存数量来更改块类型(例如,较小的Block类型如果并非所有位都很重要,则会导致浪费较少的内存)