【问题标题】:Create new data type in C++在 C++ 中创建新的数据类型
【发布时间】:2021-07-22 05:28:42
【问题描述】:

有没有办法在 C++ 中创建新的数据类型。
我有一些变量的值永远不会> 100。因此,我想创建一个新的数据类型来仅存储 0 到 100 之间的值,这也会占用更少的内存。我可以使用
unsigned short smth = 100;
但是 unsigned short 也占用 16 位,并且会有很多未使用的值。需要类似 java 中的 byte 数据类型。

16 位可能无关紧要,但想从我的应用程序中提取所有性能。

如果在 C++ 中不可能,有什么方法可以在 C 中实现并在 C++ 代码中实现?

【问题讨论】:

标签: c++


【解决方案1】:

如果您想“从应用程序中提取所有性能优势”,则不应使用寄存器大小的类型以外的其他数据类型(在您的实现中可能是 int)。

如果您不关心可移植性,我建议使用uint_fast8_t
atleast 8 bits, but the implementation uses the faster type which can be bigger

其他答案 - 将功能封装到一个类中,也是有效的,应该结合我的建议。

【讨论】:

    【解决方案2】:

    对于存储,您可以使用(unsigned) char,或者更好的(u)int8_t。甚至是 C++17 及更高版本中的 std::byte

    然后您可以将其包装在 classstruct 中,以限制可以分配给它的值。

    【讨论】:

    • std::byte 不是用于算术的,而实际上只是“位的集合”,因此它不允许对它们进行任何算术运算,因此不适合存储数字。
    猜你喜欢
    • 1970-01-01
    • 2017-05-13
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 2021-11-18
    相关资源
    最近更新 更多