Muh*_*mer 0 c++ performance data-structures
整数可以是8个字节,即2 ^ 64.很多价值观.
假设我想编写一个小程序,将这样的值存储在一个文件中:
3 1 5 6 2 8 9 0 1 2 ....
在任何时候我的值都不会高于9.所以我只需要10个组合,我可以通过仅采用2 ^ 4(16种组合)的数据类型获得.不是2 ^ 64.
不会更有效率......我怎么能做到这一点.C++是否具有本机单数字类型.
你可以制作这样的类型,但你可能不想这样做.
我建议你使用unsigned charor signed char,它们都是单字节类型.(你可以考虑使用类型别名std::uint8_t和std::int8_t,从而更好地表达你的意图来存储8位数字.)
可以使用单字节数字成员创建一个可以存储两个单独数字的类,但是由于操作必须提取您关心的数字,可能会移动它,然后在分配时反向操作,因此您将失去性能.它.也就是说,声明如下:
numbers[1] = v;
Run Code Online (Sandbox Code Playgroud)
最终会被实现如下:
combined_numbers[0] = (combined_numbers[0] & 0x0f) | (v << 4);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |