Если набор битов настолько мал, что все биты могут поместиться в unsigned long
, то вы можете использовать его функции преобразования для выполнения целочисленной арифметики, например,
bitset = std::bitset(bitset.to_ulong() + 1);
В C ++ 11 также есть функция to_ullong()
, дающая unsigned long long
, которая может быть больше, чем unsigned long
.
Если ваши битовые наборы слишком велики для этого, вам может быть лучше реализовать свой собственный, основанный на массиве или векторе целых чисел, к которому ваш счетчик может получить доступ. Ваш алгоритм все равно будет O (n 2 ), но вы можете уменьшить количество операций, необходимых для каждого добавления, по сравнению с обработкой одного бита за раз.