2013-10-10 13 views
4

我正在寻找一个C++ bitset实现,可以回答是否在一个范围内设置了一个位。 std::bitset,vectorboost::dynamic_bitset都允许访问我可以循环的各个位,但这不是查询位的范围以询问是否设置了任何位的最有效方式 - 我甚至不需要知道哪一个。如何查询一个范围内的任何位是否在C++ std :: bitset中设置?

bitset b; 
if(b.any(33, 199)) 
{ 
    // ... 
} 

是否有图书馆提供此功能?我想针对其他实现(包括我可能需要编写的一个实现)运行一些基准测试,但是我找不到实现此功能的任何基准。

回答

-1

C++ 11的bitset提供了你之后的any()方法,但如果这不是一个选项,那么只需使用b.to_ulong()并检查非零。

+0

你能提供一个链接吗?我在参考文献中看到一个“any()”,但没有基于一系列的位。 – JaredC

+1

std :: bitset :: any():http://en.cppreference.com/w/cpp/utility/bitset/all_any_none,您使用的是C++ 11,对不对? –

+0

我可以使用C++ 11,但我不认为你链接到的任何()都支持**范围**。即它不能回答“是否在[x,y]范围内的任何位?”这个问题。 – JaredC

相关问题