改变std :: bitset中一系列位值的最有效方法
The most efficient method to change the value of a range of bits in std::bitset
我需要一个具有低复杂性的有效方法来改变位置中的一系列范围的值:
bitset<1000000> bs;
我需要将值从100设置为100至500。例如。
以最低的复杂性完成此操作的最快方法是什么?
使用循环肯定不够。
普通的循环是最简单,最快的方法:
std::bitset<1000000> bs;
for (unsigned i = start, stop = start + n; i != stop; ++i)
bs.set(i);
不幸的是:
- 给定
bs
的大小,使用蒙版/转换不是一个选项(例如,请参见bitset,我可以使用" to_ulong"特定范围的零件?) -
bitset
的接口不支持范围/子块(例如,std :: bitset的性能是什么?)。boost :: Dynamic_bitset中也存在相同的限制。
还考虑std::bitset
不带迭代器,因此不能与<algorithm>
库中的功能一起使用。
如果表现确实很重要,则可以考虑临时实现。
相关文章:
- 在C++中初始化向量映射的最有效方法
- 将此布尔值传递给此函数的最有效方法是什么?
- 比较C++变量的最有效方法
- 在 c++ 中解决段树以外的范围查询的有效方法是什么?
- 存储变量的更有效方法是什么?
- 确保套装新鲜度的有效方法
- 当映射包含字符串向量作为值时,从值中获取键的有效方法
- 映射唯一值和重复值的有效方法.可以访问键或值的位置
- 在C++事务之间存储大量字符数据的有效方法
- 在unordered_multimap中精确迭代一次每个键的有效方法
- 一种将 Dart 中的字节数据转换为 C++ 中的无符号字符*的有效方法?
- 检查两个向量是否并行的最有效方法
- 从浮点数中删除小数部分但保留类型的有效方法
- 传递非泛型函数的最有效方法是什么?
- 按升序打印矢量的所有元素直到它为空而没有重复项的最有效方法是什么?
- 创建字符串数组的有效方法
- 返回一个引用C++中另一个类对象的对象的有效方法
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 从std::map值中获取密钥的有效方法