我需要编写一个条件来检查值范围内的枚举变量是否可以用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/

10-12 19:17