如何简单地将单个变量与许多不同的值进行比较?

时间:2011-03-21 07:50:11

标签: c++ comparison shortcut

我知道你可以写一个如下声明:

if (num1 != a && num1 != b && num1 != c ..........&& num1 != z)
   (do something);

但是有更简单的方法将num1变量与其他26个变量进行比较吗?有点像:

if (num1 != a,b,c,d,e,f,g.......)
   (do something);

5 个答案:

答案 0 :(得分:8)

如果a..g是连续的常量/枚举值,那么只需使用范围检查。

if (num >= a && num <= g)
{
    do_something();
}
else
{
    do_something_else();
}

如果它们不连续但不变,则可以使用switch语句。

switch (num)
{
    case a:
    case b:
    case c:
    case d:
    case e:
    case f:
    case g:
        do_something();
        break;

    default:
        do_something_else();
        break;
}

否则,如果它们只是任意变量或表达式,那么您可能只需要进行多次测试。

答案 1 :(得分:5)

您可以将a, ... ,z放入std::set,然后使用该套件的find方法检查num1是否在那里。这具有对数复杂性,但不允许短路。

答案 2 :(得分:2)

首先,良好的代码设计不应包含如此多的条件序列。

如果你的情况与它完全一样,那就是试图查看列表中是否存在数字,其中列表实际上是变量的集合。您只需将这些数字输入列表(矢量)并执行查找操作即可。

答案 3 :(得分:0)

如果情况允许,将变量存储在单独的类/中。

如果您的问题更多的是关于c ++中是否存在允许smaler if语句的语法,那么可能会在问题中更清楚。

答案 4 :(得分:0)

使用std :: find:

static ValueType values[] = { a, b, ... };
//  ...
if ( std::find( begin( values ), end( values ), num )
        == end( values ) )