gpt4 book ai didi

c++ - 遍历 boost::dynamic_bitset

转载 作者:可可西里 更新时间:2023-11-01 16:37:07 31 4
gpt4 key购买 nike

我有一个 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 的最佳方法,还是有其他方法?

最佳答案

find_firstfind_next 是最快的方法。原因是如果没有设置它们,它们可以跳过整个 block (dynamic_bitset::bits_per_block 位,可能是 32 或 64)。

注意 dynamic_bitset does not have iterators ,所以无论如何它都会表现得有点不像 C++。

关于c++ - 遍历 boost::dynamic_bitset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4684488/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com