Valores máximos y mínimos en una enumeración de C ++
Pregunta
¿Hay una manera de encontrar los valores máximos y mínimos definidos de una enumeración en c ++?
Solución
No, no hay manera de encontrar los valores máximos y mínimos definidos de cualquier enumeración en C ++. Cuando se necesita este tipo de información, a menudo es una buena práctica definir un valor Último y Primero. Por ejemplo,
enum MyPretendEnum
{
Apples,
Oranges,
Pears,
Bananas,
First = Apples,
Last = Bananas
};
No es necesario que haya valores con nombre para cada valor entre First
y Last
.
Otros consejos
No, no en C ++ estándar. Podrías hacerlo manualmente:
enum Name
{
val0,
val1,
val2,
num_values
};
num_values ??
contendrá el número de valores en la enumeración.
No. Una enumeración en C o C ++ es simplemente una lista de constantes. No hay una estructura superior que pueda contener dicha información.
Generalmente cuando necesito este tipo de información, incluyo en la enumeración un valor máximo y mínimo, algo como esto:
enum {
eAaa = 1,
eBbb,
eCccc,
eMin = eAaaa,
eMax = eCccc
}
Consulte esta página web para ver algunos ejemplos de cómo esto puede ser útil: Stupid Enum Tricks
enum My_enum
{
FIRST_VALUE = 0,
MY_VALUE1,
MY_VALUE2,
...
MY_VALUEN,
LAST_VALUE
};
después de la definición, My_enum :: LAST_VALUE == N + 1
No automáticamente, pero puede agregar valores de enumeración artificial para indicar los valores máximo y mínimo, por ejemplo,
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++) {
....
}
ni siquiera los necesitas, lo que hago es solo decir, por ejemplo, si tienes:
enum Name{val0,val1,val2};
si tiene una instrucción de cambio y para verificar si se alcanzó el último valor, haga lo siguiente:
if(selectedOption>=val0 && selectedOption<=val2){
//code
}