web-dev-qa-db-ja.com

C ++列挙型の最大値と最小値

C++で列挙型の最大および最小定義値を見つける方法はありますか?

76
Matt

いいえ、C++の列挙型の定義済みの最大値と最小値を見つける方法はありません。この種の情報が必要な場合、多くの場合、最後と最初の値を定義することをお勧めします。例えば、

enum MyPretendEnum
{
   Apples,
   Oranges,
   Pears,
   Bananas,
   First = Apples,
   Last = Bananas
};

FirstLastの間のすべての値に名前を付ける必要はありません。

85
Jeff Yates

いいえ、標準C++ではありません。手動で行うことができます:

enum Name
{
   val0,
   val1,
   val2,
   num_values
};

num_valuesには、列挙型の値の数が含まれます。

27
dalle

いいえ。CまたはC++の列挙型は、単なる定数のリストです。そのような情報を保持する上位構造はありません。

通常、この種の情報が必要な場合、enumに次のような最大値と最小値を含めます。

enum {
  eAaa = 1,
  eBbb,
  eCccc,
  eMin = eAaaa,
  eMax = eCccc
}

これがどのように役立つかの例については、このWebページを参照してください。 Stupid Enum Tricks

5
Justsalt
  enum My_enum
    {
       FIRST_VALUE = 0,

       MY_VALUE1,
       MY_VALUE2,
       ...
       MY_VALUEN,

       LAST_VALUE
    };

定義後、My_enum :: LAST_VALUE == N + 1

3
Tiendil