C++ 相当于visual studio中位集的.Find_first方法
书名大致概括了这一点 在gcc中,可以对位集使用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
.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
。