快速位集追加?

2023-12-31

我正在寻找一种具有快速位附加功能的位集实现,其中可以一次性有效地附加多个位。

e.g.

char value = 31;
char n_bits = 5;
fast_bitset bits;
bits.append(value, n_bits);

到目前为止,我已经尝试过 boost::dynamic_bitset 和 std::vector 。两者都很慢。


Old Post

我正在使用 boost::dynamic_bitset 来打包一些数据。

通常我想一次打包〜5位,这将导致像这样的调用:

char value = 31;
char n_bits = 5;
boost::dynamic_bitset<> bits;
for(char n = n_bits-1; n >= 0; --n)
    bits.push_back((value >> n) & 1);

然而,这在我看来效率很低,难道不能一次性添加所有位吗?

e.g.

char value = 31;
char n_bits = 5;
boost::dynamic_bitset<> bits;
bits.append(value, n_bits);

我希望它能做类似的事情:

template<typename T>
void append(T value, size_t n_bits)
{
     value <<= sizeof(T) - n_bits; // Make target bits most significant, remove all non-target bits.

     // TODO: Shift bits into proper place and use OR to add all target bits to bitset in one go
}

为什么dynamic_bitset没有这样的功能呢?能否有效实施?


Use the resize http://www.boost.org/doc/libs/release/libs/dynamic_bitset/dynamic_bitset.html#resize成员函数。

/* Append the lower-order nbits bits from value to set. */
template <typename T>
void append(boost::dynamic_bitset<> &set, T value, size_t nbits)
{
    set.resize(set.size() + nbits);
    for (size_t i=1; i<=nbits; i++) {
        set[set.size() - i] = value & 1;
        value >>= 1;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速位集追加? 的相关文章

随机推荐

  • 为什么要使用 Android 服务?

    我想知道当您需要做很多事情只是为了访问任何公共方法或从服务 例如较大的 List 对象 获取大量数据时 使用 Android 服务进行后台工作有什么意义 如果您愿意 为什么不直接使用一个简单的 POJO 它可以在单独的线程中在后台为您执行操
  • 无法解析 rxjava 2 中的 Observable.from 方法

    rxjava 1 中的 Observable 类中有一个 from 方法 但在 rxjava 2 中找不到 如何在以下代码中替换 rxjava 2 中的 from 方法 List
  • 傀儡节点主机名

    我正在使用木偶来配置服务器 我想在 erb 模板中打印当前机器 节点 名称 有hostname变量 但这包含 puppetmaster 主机名 关于这个主题有什么好的参考 列表吗 好像我错过了什么地方 我只需在 erb 模板中调用以下代码即
  • 在 Django 的 ORM 中访问存储过程的最佳方式是什么

    我正在设计一个相当复杂的数据库 并且知道我的一些查询将远远超出 Django ORM 的范围 有人成功地将 SP 与 Django 的 ORM 集成吗 如果是这样 什么 RDBMS 以及您是如何做到的 我们 musicpictures co
  • iPhone 版 Mapsforge 模拟

    我的 iPhone 应用程序需要一些框架 该应用程序使用地图 现在这些地图是光栅图像 我想通过制作矢量地图来优化我的应用程序 我知道我的 Android 开发同事已经使用 Mapsforge 框架来实现此目的 iPhone 上有类似的库吗
  • 为什么我们在查找素数时可以使用 sqrt(n) 而不是 n/2 作为上限? [复制]

    这个问题在这里已经有答案了 我们如何使用sqrt n 代替n 2在这段代码中 使用是否正确sqrt n static boolean isPrime long n if n lt 1 return false double limit Ma
  • 使用curses.h从键盘获取字符

    我正在尝试使用curses h 从键盘获取一个字符 这是我的来源 get char example c include
  • 为什么位域的类型会影响包含结构的大小?

    首先 这是 ISO C 标准关于位字段的规定 引用了N1570 http www open std org jtc1 sc22 wg14 www docs n1570 pdf2011 年 ISO C 标准草案 第 6 7 2 1 节 位字段
  • 为什么允许“src”属性链接到来自外部域的脚本,而 XmlHtppRequests 则不允许?

    我已经阅读了 StackOverflow 上有关同源策略的几个答案 但我似乎没有抓住本质部分 在所有使用的标签中src属性 比如
  • 如何在 django 1.3 中获取 POST 数据

    嘿 我正在按照本教程学习使用 Django 制作 wiki 页面 然而 它是用 django 0 96 制作的 而我使用 Django 1 3 所以有些东西是不同的 有些我已经自己修好了 但是这个我似乎无法让它发挥作用 我制作了一个将数据提
  • javascript:将 元素保存到磁盘上的文件

    在我的 HTML 上 我有一个 SVG 元素 它使用 d3js 渲染并在 CSS 中应用样式 当我右键单击浏览器时 我可以选择 保存图像 此操作将保存应用所有 CSS 样式呈现的图像 我一直在寻找保存文件的好方法 转到画布并导出画布 可另存
  • AVAudioPlayer.play() 不播放声音

    为什么下面的代码不播放声音 它为 play 返回 true 但我听不到任何声音 let path Users account Music sound mp3 let fileURL NSURL fileURLWithPath path va
  • iOS7中UITextView contentSize的变化和NSLayoutManager

    问题 UITextView默默地改变它contentSize在某些情况下 最简单的情况是带有大文本和键盘的textView 只需添加 UITextView 出口并设置 viewDidLoad as void viewDidLoad supe
  • UniqueIdentifier 现在导致 Apple 拒绝[重复]

    这个问题在这里已经有答案了 请不要将此标记为重复项 这个问题是关于辛佩瑞姆以及它处理 uniqueIdentifier 和identifierForVendor 的方式 Simperium仍在使用 UIDevice currentDevic
  • 在 PowerShell 中运行 Python

    我正在尝试使用指南来学习 Python 的基础知识 艰难地学习Python https en wikipedia org wiki Zed Shaw Books by 泽德 肖 https en wikipedia org wiki Zed
  • 从StreamReader中批量读取

    我在尝试通过 StreamReader 将 800MB 文本文件加载到 DataTable 时遇到了 OutOfMemory 异常 我想知道是否有办法从内存流中批量加载DataTable 即从StreamReader读取文本文件的前10 0
  • C# 流布局面板换行或换行

    我正在向流程布局面板添加一些控件 在一些控件之间我需要换行 请问我怎样才能实现这个目标 谢谢 添加中断前的最后一个控件后 调用flow SetFlowBreak lastControl true Note lastControl是您想要在之
  • 房间数据库架构实体扩展错误

    在使用 android Room 时 我有以下实体 Entity public class Call implements Parcelable PrimaryKey autoGenerate true private long id pr
  • 创建带有用户帐户的网页,我需要记住什么?

    我正在尝试编写一个具有用户帐户的网站 除了密码和电子邮件地址之外 没有太多敏感信息 但我并不真正明白我在做什么 我一边走一边把它搞砸了 关于安全或任何其他重要细节 我应该记住什么吗 你应该 加密敏感数据 http www hscripts
  • 快速位集追加?

    我正在寻找一种具有快速位附加功能的位集实现 其中可以一次性有效地附加多个位 e g char value 31 char n bits 5 fast bitset bits bits append value n bits 到目前为止 我已