эквивалент метода .Find_first для наборов битов в визуальной студии

Название в значительной степени суммирует это.

В gcc вы можете использовать .Find_first() метод для набора битов, чтобы получить позицию первого значащего бита. Есть ли какой-либо эквивалент в Visual Studio?

Я знаю, что вы можете использовать _BitScanForward64 в Visual Studio, чтобы получить первый значащий бит, но я работаю с наборами битов размером больше 64, и этот метод работает только с 64-битными целыми числами.

Я также не заинтересован в методе де Брейна.

0

Решение

template<size_t N>
size_t highbit( bitset<N> const& bs ) {
auto str = bs.template to_string< char, char_traits<char>, allocator<char> >();
size_t retval = 0;
for(auto it = str.begin(); it != str.end(); ++it, ++retval)
{
if (*it == '1')
return retval;
}
return retval;
}

Не так уж и круто, как и просили. Возвращает N если биты все нули.

Лично я бы порекомендовал немного вертеться.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector