我有一个boost dynamic_bitset,我试图从提取设置位:通过迭代一个boost ::来,dynamic_bitset
boost::dynamic_bitset<unsigned long> myBitset(1000);
我的第一个想法是做一个简单的通过每个索引“倾倒”循环,并询问是否它被设置:
for(size_t index = 0 ; index < 1000 ; ++index)
{
if(myBitset.test(index))
{
/* do something */
}
}
但后来我看到两个有趣的方法,find_first()
和find_next()
,我认为肯定是意味着这个目的:
size_t index = myBitset.find_first();
while(index != boost::dynamic_bitset::npos)
{
/* do something */
index = myBitset.find_next(index);
}
我运行了一些测试,看起来第二种方法更高效,但这让我担心可能会有另一种“更正确”的方式来执行此迭代。我无法在文档中找到任何示例或注释,指出迭代设置位的正确方法。
那么,是使用find_first()
和find_next()
迭代一个dynamic_bitset
的最佳方式,还是有另一种方式?
@Iarsmans:谢谢。没有关于它的例子,我想也许有更好的办法,但是根据你的解释,我们不能期望比这更好。 – JaredC 2011-01-13 20:35:56