私は、多くの部分で大規模なシミュレーションを作成しています。私は、複数の部分を区別するためにenumを使用しています。私は、enumを使用することのメモリコストが何であるかを知りたいのですが、私はその部分が占めるスペースを最小限に抑えたいからです。cppの列挙型のメモリ要件は何ですか?
enumの代わりにuint8_tを使用する方が良いですか?
私は、多くの部分で大規模なシミュレーションを作成しています。私は、複数の部分を区別するためにenumを使用しています。私は、enumを使用することのメモリコストが何であるかを知りたいのですが、私はその部分が占めるスペースを最小限に抑えたいからです。cppの列挙型のメモリ要件は何ですか?
enumの代わりにuint8_tを使用する方が良いですか?
C++(任意のバージョン)では、すべての列挙子の値をint
として表すことができない限り、列挙型の基になる型はデフォルトでint
です。 この場合、実装定義の型が使用されます(1つは、すべての列挙子の値を表すのに十分な大きさです)。 int
のサイズは、お使いのマシンによって異なります。それは16ビットかもしれませんが、おそらく32ビットです(64ビットマシンでさえも)。最終的には、コンパイラによって決定されます。
C++ 11以降列挙を宣言するとき、あなたは次の形式を使用して、基になる型を指定することができます。
enum name : underlying_type { ... };
// For example
enum MySmallEnum : char { ... };
出典:それは同じルールに従うようcppreference.com
In C、それはそうですC++(C++ 11以前)のように。
一般的なCコンパイラは最小の整数サイズを割り当てます。 ... – lorro
enum( 'enum foo:uint8_t {}')の整数型を指定することができます – Pubby
注意: 'enum'はデフォルトで** signed **の整数です。 –