【问题标题】:What consumes more storage space - boost::dynamic_bitset<> or raw storage?什么消耗更多存储空间 - boost::dynamic_bitset<> 或原始存储?
【发布时间】:2011-05-30 08:51:19
【问题描述】:

我有一个程序存储优化问题。

我有 4096 个“结”存储在:

  boost::dynamic_bitset<>

我现在正在考虑重构我的程序并构建一个包含boolCKnot 类。

问题是什么会消耗更多空间:

  • boost::dynamic_bitset ( 4096 , false );
  • CKnot Knot[4096] //包含一个布尔值

谢谢

【问题讨论】:

  • 它不会有很大的不同。静态数组方法会更快,因为它将适合 1 页内存!
  • 如果我将结数从 4096 (= 2^12) 增加到 2^30,这是我的最终目标。他们会有所作为吗?还是没有?

标签: c++ boost boolean data-storage


【解决方案1】:

bitset 会小很多,因为 C++ 中的 bool 必须至少有一个字节的大小,而 bitset 中的每个位都是这样,一点点。

【讨论】:

  • 其实C++中的bool和整数大小是一样的。为了让它更小,你必须使用位域,它可以将单个成员切割成单个位,但包含它们的对象仍然必须至少是一个字节。
  • @Jan sizeof(bool) 是实现定义的 - 请参阅 C++ 标准 5.3.3。它是整数类型,但它必须与整数大小相同,我认为它的意思是int
猜你喜欢
  • 2021-10-05
  • 1970-01-01
  • 2017-01-14
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多