gpt4 book ai didi

c++ - 如何查询范围内的任何位是否在 C++ std::bitset 中设置?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:24:43 25 4
gpt4 key购买 nike

我正在寻找一个 C++ bitset 实现,它可以回答是否在一个范围内设置了一个位。 std::bitset , vector , 和 boost::dynamic_bitset都可以访问我可以循环的各个位,但这不是查询位范围以询问是否设置了任何位的最有效方法-我什至不需要知道哪个。

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

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

最佳答案

不幸的是,在 C++11 bitset 中,无法通过仅指定范围的边界来将位范围设置为给定值。迭代单个位似乎是我们能做的最多的事情。也无法检查范围内的所有位是否都设置为相同的值 (1,0)。

Git 中有一个开源项目提供了支持这些操作的 BitSet ( RangedBitset) 的替代实现。它在内部使用任意大小的 uint_64t_ 字数组,但也可以处理以单位精度​​指定的范围。在那里你可以做类似的事情

 a.set(4, 8, true); // set the range [ 4 .. 8 [ to true
bool is_all_range = a.check(2, 6, true); // check if all range is set to 1.

关于c++ - 如何查询范围内的任何位是否在 C++ std::bitset 中设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19286099/

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