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

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

Susan Sarandon
发布: 2024-12-29 13:19:14
原创
791 人浏览过

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

有效比较一个变量与多个值

在编程中,经常需要检查一个变量是否与多个选项之一匹配。这可以通过多种方法来实现,但优先考虑效率至关重要。

效率低下的方法

尝试使用 OR 等逻辑运算符将变量与多个值进行比较可能会导致低效的代码。例如:

if (num == (1 || 2 || 3))
登录后复制

此方法分别计算每个逻辑表达式 (1 || 2, 2 || 3),这可能会导致处理浪费。

以下方面的高效解决方案C 11

C 11 中的一个有效解决方案涉及利用 std::initializer_list。以下模板函数采用一个变量和潜在匹配的初始值设定项列表:

template <typename T>
bool is_in(const T&amp; 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 &amp;&amp;first, T &amp;&amp; ... t)
{
    return ((first == t) || ...);
}
登录后复制

此模板函数使用完美转发来有效地评估每个比较,从而生成与手写比较相同的代码。

以上是如何在 C 中有效地将变量与多个值进行比较?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板