簡體   English   中英

如何簡潔地將單個變量與許多不同的值進行比較?

[英]How can I concisely compare a single variable to many different values?

我知道您可以編寫如下語句:

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

但是,有沒有更簡單的方法將num1變量與其他26個變量進行比較? 有點像:

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

如果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;
}

否則,如果它們只是任意變量或表達式,則可能只需要使用多個測試即可。

您可以將a, ... ,z放入std::set ,然后使用該std::setfind方法檢查其中是否存在num1 這具有對數復雜性,但不允許短路。

首先,一個好的代碼設計不應包含太多的條件序列。

如果您的情況確實如此,則嘗試查看列表中是否存在數字,該列表實際上是變量的集合。 您只需將這些數字輸入到list(vector)中並執行查找操作。

如果情況允許,將變量存儲在單獨的類中。

如果您的問題更多地是關於c ++中是否存在允許使用更小的if語句的語法,則可以在問題中更清楚地說明這一點。

使用std :: find:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM