web-dev-qa-db-fra.com

Valeurs max et min dans une énumération C ++

Existe-t-il un moyen de trouver les valeurs maximales et minimales définies d'une énumération en c ++?

76
Matt

Non, il n'y a aucun moyen de trouver les valeurs définies maximale et minimale d'une énumération en C++. Lorsque ce type d'informations est nécessaire, il est souvent recommandé de définir une valeur Last and First. Par exemple,

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

Il n'est pas nécessaire de nommer des valeurs pour chaque valeur comprise entre First et Last.

85
Jeff Yates

Non, pas en C++ standard. Vous pouvez le faire manuellement:

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

num_values contiendra le nombre de valeurs dans l'énumération.

27
dalle

Non. Une énumération en C ou C++ est simplement une liste de constantes. Aucune structure supérieure ne détiendrait de telles informations.

Habituellement, lorsque j'ai besoin de ce type d'informations, j'inclus dans l'énumération une valeur max et min quelque chose comme ceci:

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

Voir cette page Web pour quelques exemples de la façon dont cela peut être utile: Stupid Enum Tricks

5
Justsalt
  enum My_enum
    {
       FIRST_VALUE = 0,

       MY_VALUE1,
       MY_VALUE2,
       ...
       MY_VALUEN,

       LAST_VALUE
    };

après définition, My_enum :: LAST_VALUE == N + 1

3
Tiendil