gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 01:31:04 24 4
gpt4 key购买 nike

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

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

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

最佳答案

来自 the documentation :

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

dynamic_bitset 作为模板最明显的优点是您可以指定自己的Allocator 类型。出于多种原因,这可能很有用(性能、内存连续性、调试)。如果 dynamic_bitset 的内部存储需要增长以容纳更多位,则它会通过 Allocator 进行分配。

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

关于c++ - 为什么 boost::dynamic_bitset 是一个模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46423615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com