Почему boost :: dynamic_bitset является шаблоном?

я использовал boost::dynamic_bitset до того как boost::dynamic_bitset<>, не задумываясь о том, почему это шаблонно.

Хотя я могу понять почему std::bitset является шаблоном (тип шаблона используется для указания размера набора битов), теперь я столкнулся с некоторым кодом вида boost::dynamic_bitset<unsigned char> и я не могу понять, в чем смысл типа шаблона.

Как boost::dynamic_bitset<unsigned char> отличный от boost::dynamic_bitset<>? Следует ли использовать один поверх другого в любой ситуации?

2

Решение

От документация:

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

Наиболее очевидное преимущество dynamic_bitset будучи шаблоном, вы можете указать свой собственный Allocator тип. Это может быть полезно для множества причин (производительность, непрерывность памяти, отладка). dynamic_bitset выделяет через Allocator если его внутреннее хранилище должно расти, чтобы вместить больше битов.

Кроме того, он позволяет вам указать Block тип, который является базовым примитивом, используемым для представления набора битов. Возможно, вы захотите изменить тип блока в зависимости от используемой вами платформы или от того, сколько памяти вы хотите использовать. (например, меньше Block тип приведет к меньшему расходу памяти, если не все биты значимы).

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector