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