Максимальные и минимальные значения в перечислении C ++ - PullRequest
76 голосов
/ 01 октября 2008

Есть ли способ найти максимальные и минимальные определенные значения перечисления в c ++?

Ответы [ 6 ]

85 голосов
/ 01 октября 2008

Нет, нет способа найти максимальные и минимальные определенные значения любого перечисления в C ++. Когда требуется информация такого рода, часто бывает полезно определить значения Last и First. Например,

enum MyPretendEnum
{
   Apples,
   Oranges,
   Pears,
   Bananas,
   First = Apples,
   Last = Bananas
};

Для каждого значения не должно быть именованных значений от First до Last.

27 голосов
/ 01 октября 2008

Нет, не в стандартном C ++. Вы можете сделать это вручную:

enum Name
{
   val0,
   val1,
   val2,
   num_values
};

num_values будет содержать количество значений в перечислении.

5 голосов
/ 01 октября 2008

Нет. Перечисление в C или C ++ - это просто список констант. Нет более высокой структуры, которая бы содержала такую ​​информацию.

Обычно, когда мне нужна такая информация, я включаю в enum значение max и min примерно так:

enum {
  eAaa = 1,
  eBbb,
  eCccc,
  eMin = eAaaa,
  eMax = eCccc
}

На этой веб-странице приведены некоторые примеры того, как это может быть полезно: Тупые трюки Enum

3 голосов
/ 02 октября 2008
  enum My_enum
    {
       FIRST_VALUE = 0,

       MY_VALUE1,
       MY_VALUE2,
       ...
       MY_VALUEN,

       LAST_VALUE
    };

после определения, My_enum :: LAST_VALUE == N + 1

0 голосов
/ 22 февраля 2019

Не автоматически, но вы можете добавить искусственные значения enum для обозначения минимальных и максимальных значений, например,

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++) {
.... 
}
0 голосов
/ 23 октября 2010

они вам даже не нужны, я просто говорю, например, если у вас есть:

enum Name{val0,val1,val2};

если у вас есть оператор switch и чтобы проверить, было ли достигнуто последнее значение, сделайте следующее:

if(selectedOption>=val0 && selectedOption<=val2){

   //code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...