【发布时间】:2011-01-13 19:44:46
【问题描述】:
我有一个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 的最佳方法,还是有其他方法?
【问题讨论】: