Максимальное и минимальное значения в перечислении С++

Есть ли способ найти максимальное и минимальное значения 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
}