Question

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

Était-ce utile?

La solution

Non, il n'y a aucun moyen de trouver les valeurs maximales et minimales définies d'une énumération quelconque en C ++. Lorsque ce type d'informations est nécessaire, il est souvent recommandé de définir une valeur Last et 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 Premier et Dernier .

Autres conseils

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.

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

Habituellement, lorsque j'ai besoin de ce type d'informations, j'inclus dans l'énumération une valeur maximale et minimale similaire à ceci:

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

Consultez cette page Web pour obtenir des exemples d’activités utiles: Des astuces stupides enum

  enum My_enum
    {
       FIRST_VALUE = 0,

       MY_VALUE1,
       MY_VALUE2,
       ...
       MY_VALUEN,

       LAST_VALUE
    };

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

Pas automatiquement, mais vous pouvez ajouter des valeurs d'énumération artificielles pour signifier des valeurs minimales et maximales, par exemple.

typedef enum {start_of_colors=-1, eRed, eWhite, eBlue, eGray,
end_of_colors} eListOfTags;

for (eListOfTags i = start_of_colors+1; i < end_of_colors; i++) {
.... 
}

vous n’avez même pas besoin d’eux, ce que je fais est juste que je dis par exemple si vous avez:

enum Name{val0,val1,val2};

si vous avez une instruction switch et pour vérifier si la dernière valeur a été atteinte, procédez comme suit:

if(selectedOption>=val0 && selectedOption<=val2){

   //code
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top