0

タイトルはそれをかなり要約しています。

gcc では、.Find_first()ビットセットに対してこのメ​​ソッドを使用して、最初の有効ビットの位置を取得できます。Visual Studio に同等のものはありますか?

Visual Studio で使用して最初の有効なビットを取得できることは知っていますが_BitScanForward64、私は 64 より大きいサイズのビットセットを使用しており、この方法は 64 ビット整数でのみ機能します。

また、De Bruijn ビットいじり法にも興味がありません。

4

1 に答える 1

1
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ビットがすべてゼロかどうかを返します。

個人的には、代わりに少しいじることをお勧めします。

于 2012-12-06T21:47:16.757 に答える