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

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

Susan Sarandon
Susan Sarandon原创
2024-12-29 13:19:14813浏览

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

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