Есть ли способ найти максимальное и минимальное значения enum в С++?
Максимальное и минимальное значения в перечислении С++
Ответ 1
Нет, нет способа найти максимальные и минимальные определенные значения любого перечисления в С++. Когда такая информация необходима, часто бывает полезно определить значение Last и First. Например,
enum MyPretendEnum
{
Apples,
Oranges,
Pears,
Bananas,
First = Apples,
Last = Bananas
};
Не нужно иметь именованные значения для каждого значения между First
и Last
.
Ответ 2
Нет, не в стандартном С++. Вы можете сделать это вручную:
enum Name
{
val0,
val1,
val2,
num_values
};
num_values
будет содержать количество значений в перечислении.
Ответ 3
Нет. Перечисление на C или С++ - это просто список констант. Нет более строгой структуры, которая бы содержала такую информацию.
Обычно, когда мне нужна такая информация, я включаю в enum значение max и min что-то вроде этого:
enum {
eAaa = 1,
eBbb,
eCccc,
eMin = eAaaa,
eMax = eCccc
}
См. эту веб-страницу для некоторых примеров того, как это может быть полезно: Глупые хитрости обхода
Ответ 4
enum My_enum
{
FIRST_VALUE = 0,
MY_VALUE1,
MY_VALUE2,
...
MY_VALUEN,
LAST_VALUE
};
после определения, My_enum:: LAST_VALUE == N + 1
Ответ 5
вам даже не нужны, что я делаю, просто говорю, например, если у вас есть:
enum Name{val0,val1,val2};
если у вас есть оператор switch и чтобы проверить, было ли достигнуто последнее значение, выполните следующие действия:
if(selectedOption>=val0 && selectedOption<=val2){
//code
}