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

有没有办法find一个枚举的最大和最小定义值在c + +?

不,没有办法在C ++中find任何枚举的最大值和最小值。 当需要这种信息时,定义一个Last和First值通常是很好的做法。 例如,

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

FirstLast之间的每个值都不需要命名值。

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