相当于 Visual Studio 中位集的 .Find_first 方法
Posted
技术标签:
【中文标题】相当于 Visual Studio 中位集的 .Find_first 方法【英文标题】:equivalent of .Find_first method for bitsets in visual studio 【发布时间】:2012-12-06 20:52:44 【问题描述】:标题几乎概括了它。
在 gcc 中,您可以在 bitset 上使用.Find_first()
方法来获取第一个有效位的位置。 Visual Studio 中是否有任何等价物?
我知道您可以在 Visual Studio 中使用_BitScanForward64
来获取第一个有效位,但我使用大小大于 64 的位集,并且此方法仅适用于 64 位整数。
我也对 De Bruijn bit twiddling 方法不感兴趣。
【问题讨论】:
【参考方案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
。
就我个人而言,我会建议用一点点玩弄。
【讨论】:
谢谢。这似乎单独检查位的值,这不是我问这个问题时的想法。我主要/主要对一些依赖于编译器的指令感兴趣,例如fbs
。以上是关于相当于 Visual Studio 中位集的 .Find_first 方法的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2010“转到定义”/f12 无法正常工作 [重复]