首頁 > 後端開發 > C++ > 如何在 C 中有效地將變數與多個值進行比較?

如何在 C 中有效地將變數與多個值進行比較?

Mary-Kate Olsen
發布: 2025-01-01 01:04:09
原創
342 人瀏覽過

How Can I Efficiently Compare a Variable to Multiple Values in C  ?

有效地將變數與多個值進行比較

在某些情況下,有必要同時將一個變數與多個選項進行比較。通常,開發人員會使用OR 運算符;

理想的解決方案

理想情況下,我們尋求一種方便的方法來區分多個組,如以下程式碼所示:

if (num = (1,2,3))

else if (num = (4,5,6))

else if (num = (7,8,9))
登入後複製

C 11解決方案使用std::initializer_list

在 C 11 中,可以使用 std::initializer_list 來實現所需的功能。透過定義is_in 模板函數,我們可以有效地將變數與一組選項進行比較:

#include <algorithm>
#include <initializer_list>

template <typename T>
bool is_in(const T& v, std::initializer_list<T> lst)
{
    return std::find(std::begin(lst), std::end(lst), v) != std::end(lst);
}
登入後複製

這使我們能夠簡潔地執行比較:

if (is_in(num, {1, 2, 3})) { DO STUFF }
登入後複製

C 17解決方案:更有效率

C 17引入了高度最佳化的解決方案,效果良好任何類型:

template<typename First, typename ... T>
bool is_in(First &&first, T && ... t)
{
    return ((first == t) || ...);
}

// ...

// s1, s2, s3, s4 are strings.
if (is_in(s1, s2, s3, s4)) // ...
登入後複製

與 C 11 版本不同,即使對於字串等複雜類型,該版本也能產生高效的程式碼。

以上是如何在 C 中有效地將變數與多個值進行比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板