C ++枚举中的最大值和最小值

时间:2020-03-06 14:59:27  来源:igfitidea点击:

有没有办法找到C ++中枚举的最大和最小定义值?

解决方案

不,无法找到C ++中任何枚举的最大和最小定义值。当需要此类信息时,通常最好的做法是定义一个Last和First值。例如,

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

不需要为"第一"和"最后"之间的每个值命名值。

不,不是在标准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

我们甚至不需要它们,我只想说一句,如果我们有:

enum Name{val0,val1,val2};

如果我们有switch语句,并检查是否达到最后一个值,请执行以下操作:

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

   //code
}