我需要编写一个条件来检查值范围内的枚举变量是否可以用E语言完成:
enum EnumVariable {a, b, d, g, f, t, k, i};
if (EnumVariable in [ a, g, t, i]) {
...
}
在C++中,有没有比询问4次
if EnumVariable==a or EnumVariable==b
等更好的方法? 最佳答案
似乎有几个人喜欢我的评论,并要求将其发布为答案,因此:
实际上,您可以将switch
用于整数类型,而在某些值之间不使用break
-s。
例如,您的代码可能如下所示:
enum EnumVariable {a, b, d, g, f, t, k, i};
switch( EnumVariable )
{
case a:
case g:
case t:
case i:
// do something
break;
// handler other values
};
这将非常有效,但是仅适用于整数类型,不适用于
std::string
。对于其他类型,您可以尝试使用其他答案的一些建议。写起来有点长,但是非常非常有效,可以满足您的需求。
关于c++ - C++是否具有指定值范围的比较运算符? (例如E语言中的 'in')?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22035137/