为什么boost :: dynamic_bitset模板
Why is boost::dynamic_bitset a template?
我之前曾在 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
类型如果并非所有位都很重要,则会导致浪费较少的内存)。
相关文章:
- .cpp和.h文件中的模板专用化声明
- C++模板来检查友元函数的存在
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 如何在c++中为模板函数实例创建快捷方式
- 使用C++中的模板和运算符重载执行矩阵运算
- 有人能分解一下这个c++模板的语法吗
- 如何在c++17中制作一个模板包装器/装饰器
- 模板化建造师专业化
- 调用专用模板时出错"no matching function for call to [...]"
- 模板元程序查找相似的连续类型名称
- 如何在C++20中创建模板别名的推导指南
- 找不到使用 bitset 实例化模板函数的有效方法
- 从STD :: BITSET ::操作员[]扣除模板
- 为什么通过模板实现bitset
- 避免对bitset模板进行窄化转换