Я хочу определить размер набора битов во время выполнения.
Но std::bitset<N>
принимает только значения constexpr для N, даже не значения const.
Что означает, что размер набора битов должен быть определен до компиляции.
Я знаю, std::vector
обеспечивает оптимизацию для массива bool,
, но в нем отсутствуют нужные мне полезные члены набора битов.
Вопрос 1: Почему N должно быть значением constexpr ?
Ну, я предполагаю, что это потому, что bitset является шаблоном, но все же это огромное неудобство.
Bitset мог бы быть классом , а не шаблоном.
Это Конструктор может принять size_t в качестве аргумента, чем я могу создать набор битов переменной длины.
Тот же вопрос касается std::array
.
Может быть std::array<type> foo(size, values)
.
Вопрос 2. Есть ли какие-нибудь «хаки», которые позволяют мне создавать наборы битов переменной длины?
Я почти уверен, что их не будет, учитывая, как работает шаблон.
Но, может быть, есть какой-то хитрый трюк:)
Если нет, мне придется использовать std::vector<bool>
и сам реализовывать элементы bitset.