Valeurs max et min dans une énumération C ++
Question
Existe-t-il un moyen de trouver les valeurs maximales et minimales définies d'une énumération en c ++?
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
}