首页 >后端开发 >C++ >如何在 C 中有效地将变量与多个值进行比较?

如何在 C 中有效地将变量与多个值进行比较?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-01 01:04:09354浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn