Czy istnieje sposób na znalezienie maksymalnej i minimalnej zdefiniowanej wartości wyliczenia w języku C ++?
Czy istnieje sposób na znalezienie maksymalnej i minimalnej zdefiniowanej wartości wyliczenia w języku C ++?
Odpowiedzi:
Nie, nie ma sposobu, aby znaleźć maksymalne i minimalne zdefiniowane wartości dowolnego wyliczenia w C ++. Kiedy tego rodzaju informacje są potrzebne, często dobrą praktyką jest zdefiniowanie wartości Last i First. Na przykład,
enum MyPretendEnum
{
Apples,
Oranges,
Pears,
Bananas,
First = Apples,
Last = Bananas
};
Nie ma potrzeby nadawania nazw wartościom dla każdej wartości z przedziału od Firstdo Last.
Nie, nie w standardowym C ++. Możesz to zrobić ręcznie:
enum Name
{
val0,
val1,
val2,
num_values
};
num_values będzie zawierać liczbę wartości w wyliczeniu.
num_valuesbędzie zawierał liczbę wartości w wyliczeniu, z wyjątkiem num_valuessiebie.
Nie. Wyliczenie w C lub C ++ to po prostu lista stałych. Nie ma wyższej struktury, która przechowała takie informacje.
Zwykle, gdy potrzebuję tego rodzaju informacji, dołączam do wyliczenia wartości maksymalne i minimalne, mniej więcej tak:
enum {
eAaa = 1,
eBbb,
eCccc,
eMin = eAaaa,
eMax = eCccc
}
Zobacz tę stronę internetową, aby zobaczyć kilka przykładów tego, jak to może być przydatne: Stupid Enum Tricks
Nie automatycznie, ale możesz dodać sztuczne wartości wyliczenia, aby oznaczyć wartości minimalne i maksymalne, np
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++) {
....
}
nawet ich nie potrzebujesz, ja tylko mówię, jeśli masz na przykład:
enum Name{val0,val1,val2};
jeśli masz instrukcję switch i aby sprawdzić, czy ostatnia wartość została osiągnięta, wykonaj następujące czynności:
if(selectedOption>=val0 && selectedOption<=val2){
//code
}