【问题标题】:Best data structure for a sequence of digits [0:9]数字序列的最佳数据结构 [0:9]
【发布时间】:2018-05-07 17:22:59
【问题描述】:

在 c++ 中可以处理数字序列 [0:9] 且内存浪费最少的最佳数据类型是什么?

我觉得可能是这样的

typedef bitset<4> Digit;
vector<Digit> myVector;

但我认为每个bitset&lt;4&gt; 都保留一个字节-与字符相同-,所以它并不比普通字符串好,是吗?

有没有更好的办法来处理这样的事情?

【问题讨论】:

  • 你想做什么?由于这是写的,我无法弄清楚。
  • std::vector&lt;unsigned char&gt; 上写一个包装器来存储每个字节的两位数字可能吗?但是你为什么需要它? std::vector&lt;unsigned char&gt; 每个字节一个数字听起来更方便..
  • 存储在the least possible waste in memory,每个数字占4位(一个半字节),你可以用一个字符存储2个数字。一个在 MSB 半字节,另一个在 LSB 半字节。在这种最坏的情况下(奇数位数)你的一个半字节将被空置。 WARNING 这样做的代码将不太易于管理。
  • 您使用的任何小于一个字节的东西都会产生编码/解码开销,从而使您对数字执行的任何操作都变慢。我不确定这是否值得权衡。
  • 你为什么在课堂上使用十进制数字?

标签: c++ string digit std-bitset


【解决方案1】:

要存储一组 10 个值,需要 4 位。

但是在 4 位上,可以表示 16 个值。那是浪费了 6/16 =37.5%。

因此,最好的表现形式会最大限度地减少浪费。

最好的方法是以二进制形式存储,其中使用了所有位的组合。

【讨论】:

    猜你喜欢
    • 2013-06-22
    • 2017-10-15
    • 1970-01-01
    • 2016-01-02
    • 2012-04-18
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    相关资源
    最近更新 更多