![](/img/trans.png)
[英]How can I concisely write a lot of explicit function template instantiations?
[英]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;
}
否則,如果它們只是任意變量或表達式,則可能只需要使用多個測試即可。
首先,一個好的代碼設計不應包含太多的條件序列。
如果您的情況確實如此,則嘗試查看列表中是否存在數字,該列表實際上是變量的集合。 您只需將這些數字輸入到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.