Самый эффективный способ изменить значение диапазона битов в std::bitset

Мне нужен эффективный метод с низкой сложностью для изменения значений диапазона битов в наборе битов:

bitset<1000000> bs;

и мне нужно установить значения от 100 до 500, например, TRUE.

Какой самый быстрый способ сделать это при минимальной сложности?

Использование цикла не будет достаточно точно.

1 ответ

Обычный цикл for- это самый простой и быстрый способ:

std::bitset<1000000> bs;

for (unsigned i = start, stop = start + n; i != stop; ++i)
  bs.set(i);

К несчастью:

Также учтите, что std::bitset не поставляется с итераторами, поэтому его нельзя использовать с функциями в <algorithm> библиотека.

Если производительность действительно имеет значение, вы можете подумать о специальной реализации.

Другие вопросы по тегам