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

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

Mary-Kate Olsen
发布: 2025-01-01 01:04:09
原创
325 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板