快速位集追加?

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(使用前将#替换为@)

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

  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置

随机推荐

  • 为什么要使用 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 到目前为止 我已