Я пишу программу, которая должна манипулировать очень длинными строками булевых значений. Первоначально я хранили их как динамический массив из unsigned long long int
переменных и выполнял побитовые операции на C-стиле.C++ Variable Width Bit Field
Однако я не хочу, чтобы накладные расходы возникали из-за необходимости перебирать массив, даже если процессор делает это на уровне машинного кода, то есть я полагаю, что компилятор, вероятно, более эффективен, чем я ,
Итак, мне интересно, есть ли способ сохранить их в виде битового поля. Единственная проблема заключается в том, что я слышал, что вам нужно объявить константу во время выполнения, чтобы это работало, и я не особо этого делаю, так как не знаю, сколько бит мне нужно, когда запускается программа. Есть ли способ сделать это?
Вы посмотрели на 'std :: bitset'? –
Или, может быть, 'std :: vector', в зависимости от того, как вы собираетесь «манипулировать» ими. –
И Boost имеет 'dynamic_bitset'. Битвы не будут работать; я думаю, они должны быть постоянной шириной (и не более, чем обычный интегральный тип). –