我知道这很荒谬,但我需要它来优化存储。有什么好的方法用C++实现吗?
它必须足够灵活,以便我可以将它用作普通数据类型,例如Vector< int20 >
、运算符重载等。
如果存储是您主要关心的问题,我怀疑您需要相当多的 20 位变量。将它们成对存放怎么样?你可以创建一个代表两个这样的变量的类并将它们存储在 2.5+2.5 = 5 个字节中。
为了方便地访问变量,您可以覆盖 [] 运算符,这样您就可以编写:
int fst = pair[0];
int snd = pair[1];
因为您可能希望允许进行诸如
pair[1] += 5;
您不想返回支持字节的副本,而是返回一个参考。但是,您不能返回对支持字节的直接引用(因为它会弄乱其相邻值),因此您实际上需要返回一个支持字节的代理(反过来又引用了支持字节)并让代理重载相关运算符。
事实上,正如 @Tony 所建议的,您可以将其概括为拥有一个通用容器来保存 N 个这样的 20 位变量。
(我自己在向量的专门化中完成了此操作,以有效存储布尔值(作为单个位)。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)