我正在创建一个包含许多部分的大规模模拟,我正在使用枚举来区分多个部分。我想知道使用枚举的内存成本是多少,因为我想将该部分占用的空间保持在最低限度。
使用 uint8_t 而不是枚举更好吗?
最佳答案
在 C++(任何版本)中,默认情况下枚举的基础类型是 int
,除非每个枚举值都不能表示为 int
。
在这种情况下,使用实现定义的类型(一个大到足以表示每个枚举器值的类型)。请注意,int
的大小取决于您的机器。它可能是 16 位,但也可能是 32 位(即使在 64 位机器上)。最终由编译器决定。
从 C++11 开始,您可以在声明枚举时指定底层类型,使用以下形式:
enum name : underlying_type { ... };
// For example
enum MySmallEnum : char { ... };
In C ,它似乎遵循与 C++(C++11 之前)相同的规则。
关于c++ - cpp 中枚举的内存要求是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37998933/