Существует ли удобный аналог std::bitset<>
, который динамически изменяется во время создания экземпляра, но позволяет избежать дополнительного выделения, требуемого boost::dynamic_bitset<>
Вы можете легко создавать наборы битов динамического размера в C, выполняя что-то вроде:
typedef struct { node_t node; block_t bits[0]; } node_bitset_t;
p = (node_bitset_t *)malloc( (sizeof(node_t) + sizeof(block_t)*blocks) * array_size);
Вы можете сделать это, используя std::vector<std::bitset<bits>>
, только если вы знаете bits
во время компиляции.Если вы используете std::vector<boost::dynamic_bitset<>>
, то вы увидите дополнительный вызов распределителя.Есть ли компромисс, который достигает баланса вышеупомянутого кода C?
Например, у вас мог бы быть некоторый пользовательский распределитель для std :: vector <...>, который оставляет после себя некоторое дополнительное пространство после каждого boost::dynamic_bitset<>
и выделяетm_block
там, хотя это, вероятно, все еще будет стоить вам указатель для m_block
.