题
有没有办法在c ++中找到枚举的最大和最小定义值?
解决方案
不,无法在C ++中找到任何枚举的最大和最小定义值。当需要这种信息时,定义Last和First值通常是一种好习惯。例如,
enum MyPretendEnum
{
Apples,
Oranges,
Pears,
Bananas,
First = Apples,
Last = Bananas
};
First
和 Last
之间的每个值都不需要命名值。
其他提示
不,不是标准的C ++。你可以手动完成:
enum Name
{
val0,
val1,
val2,
num_values
};
num_values
将包含枚举中的值数。
没有。 C或C ++中的枚举只是一个常量列表。没有更高的结构可以保存这些信息。
通常当我需要这种信息时,我在枚举中包含这样的最大值和最小值:
enum {
eAaa = 1,
eBbb,
eCccc,
eMin = eAaaa,
eMax = eCccc
}
有关如何使用此功能的一些示例,请参阅此网页: Stupid Enum Tricks
enum My_enum
{
FIRST_VALUE = 0,
MY_VALUE1,
MY_VALUE2,
...
MY_VALUEN,
LAST_VALUE
};
定义后,My_enum :: LAST_VALUE == N + 1
不是自动的,但您可以添加人工枚举值来表示最小值和最大值,例如
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++) {
....
}
你甚至不需要它们,我所做的只是我说,例如,如果你有:
enum Name{val0,val1,val2};
如果你有switch语句并检查是否达到了最后一个值,请执行以下操作:
if(selectedOption>=val0 && selectedOption<=val2){
//code
}
不隶属于 StackOverflow