【发布时间】:2018-05-07 17:22:59
【问题描述】:
在 c++ 中可以处理数字序列 [0:9] 且内存浪费最少的最佳数据类型是什么?
我觉得可能是这样的
typedef bitset<4> Digit;
vector<Digit> myVector;
但我认为每个bitset<4> 都保留一个字节-与字符相同-,所以它并不比普通字符串好,是吗?
有没有更好的办法来处理这样的事情?
【问题讨论】:
-
你想做什么?由于这是写的,我无法弄清楚。
-
在
std::vector<unsigned char>上写一个包装器来存储每个字节的两位数字可能吗?但是你为什么需要它?std::vector<unsigned char>每个字节一个数字听起来更方便.. -
存储在
the least possible waste in memory,每个数字占4位(一个半字节),你可以用一个字符存储2个数字。一个在 MSB 半字节,另一个在 LSB 半字节。在这种最坏的情况下(奇数位数)你的一个半字节将被空置。 WARNING 这样做的代码将不太易于管理。 -
您使用的任何小于一个字节的东西都会产生编码/解码开销,从而使您对数字执行的任何操作都变慢。我不确定这是否值得权衡。
-
你为什么在课堂上使用十进制数字?
标签: c++ string digit std-bitset