C++ 相当于visual studio中位集的.Find_first方法

C++ 相当于visual studio中位集的.Find_first方法,c++,visual-studio,gcc,bitset,C++,Visual Studio,Gcc,Bitset,书名大致概括了这一点 在gcc中,可以对位集使用.Find_first()方法来获取第一个有效位的位置。VisualStudio中是否有类似的工具 我知道可以在Visual Studio中使用\u BitScanForward64来获取第一个有效位,但我使用的是大于64的位集,并且此方法仅适用于64位整数 我对De Bruijn位旋转方法也不感兴趣 模板 template<size_t N> size_t highbit( bitset<N> const& bs

书名大致概括了这一点

在gcc中,可以对位集使用
.Find_first()
方法来获取第一个有效位的位置。VisualStudio中是否有类似的工具

我知道可以在Visual Studio中使用
\u BitScanForward64
来获取第一个有效位,但我使用的是大于64的位集,并且此方法仅适用于64位整数

我对De Bruijn位旋转方法也不感兴趣

模板
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;
}
大小\u t高位(位集常量和字节){ auto str=bs.template to_string(); 大小返回=0; 对于(自动it=str.begin();it!=str.end();++it,++retval) { 如果(*it==“1”) 返回返回; } 返回返回; }
按要求,不要有点胡闹。如果位均为零,则返回
N


就我个人而言,我建议改为玩转。

谢谢。这似乎是单独检查位的值,这不是我问这个问题时的想法。我主要对一些编译器相关的指令感兴趣,比如
fbs