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

Cra*_*ide 6 c++ comparison shortcut

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

if (num1 != a && num1 != b && num1 != c ..........&& num1 != z)
   (do something);
Run Code Online (Sandbox Code Playgroud)

但有没有更简单的方法来比较num1变量和26个其他变量?有点像:

if (num1 != a,b,c,d,e,f,g.......)
   (do something);
Run Code Online (Sandbox Code Playgroud)

Pau*_*l R 8

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

if (num >= a && num <= g)
{
    do_something();
}
else
{
    do_something_else();
}
Run Code Online (Sandbox Code Playgroud)

如果它们是非连续但不变的,则可以使用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;
}
Run Code Online (Sandbox Code Playgroud)

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


Bjö*_*lex 5

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

  • 或者,如果您的数据类型具有良好的散列算法(或者您只使用基本类型),那么`std :: unordered_set`会为此提供持续的复杂性. (4认同)