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

Mat*_*att 76 c++ enums

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

Jef*_*tes 86

不,没有办法在C++中找到任何枚举的最大和最小定义值.当需要这种信息时,定义Last和First值通常是一种好习惯.例如,

enum MyPretendEnum
{
   Apples,
   Oranges,
   Pears,
   Bananas,
   First = Apples,
   Last = Bananas
};
Run Code Online (Sandbox Code Playgroud)

不需要为First和之间的每个值命名值Last.

  • 对于非顺序枚举仍然有用 - 只要你不希望每个值都存在 (2认同)

dal*_*lle 27

不,不是标准的C++.你可以手动完成:

enum Name
{
   val0,
   val1,
   val2,
   num_values
};
Run Code Online (Sandbox Code Playgroud)

num_values 将包含枚举中的值的数量.

  • @lizusek:`num_values`将包含枚举中的值的数量,除了`num_values`本身. (10认同)
  • @dalie是的,这就是为什么它会是:价值数 - 1.当然我知道你说的是价值观,这意味着扣除值最后一个是不是一个真正的价值,而是一个帮手.不过我建议让它更清晰. (3认同)

Tie*_*dil 6

  enum My_enum
    {
       FIRST_VALUE = 0,

       MY_VALUE1,
       MY_VALUE2,
       ...
       MY_VALUEN,

       LAST_VALUE
    };
Run Code Online (Sandbox Code Playgroud)

定义后,My_enum::LAST_VALUE== N+1


Jus*_*alt 5

不可以.C或C++中的枚举只是一个常量列表.没有更高的结构可以保存这些信息.

通常当我需要这种信息时,我在枚举中包含这样的最大值和最小值:

enum {
  eAaa = 1,
  eBbb,
  eCccc,
  eMin = eAaaa,
  eMax = eCccc
}
Run Code Online (Sandbox Code Playgroud)

有关如何使用它的一些示例,请参阅此网页:Stupid Enum Tricks