C ++ - if语句简化

时间:2013-01-03 17:11:46

标签: c++ if-statement

  

可能重复:
  How can I check whether multiple variables are equal to the same value?

有没有办法写这个:

    if ((var1==var2) && (var2==var3) && (var3==var4) ...)

这样的事情

    if (var1==var2==var3==var4 ...)

3 个答案:

答案 0 :(得分:5)

在C ++ 11中,您可以编写一组这样的函数:

template<typename T>
bool all_equal(T const &)
{
    return true;
}

template<typename T, typename U, typename... Args>
bool all_equal(T const & a, U const & b, Args const&... c)
{
    return a==b && all_equal(b,c...);
}

int main()
{
    std::cout << all_equal(1,2,3) << '\n';
    std::cout << all_equal(1,1,1) << '\n';
}

编辑:我猜Steve Jessop对链接的副本here

有同样的想法

答案 1 :(得分:1)

不是那种比那更清楚的方式,不是。例如,您可以在set中插入值,然后检查是否size == 1,但现在就可以了。

答案 2 :(得分:0)

基本上,没有。

如果你有一个集合,而不仅仅是零星的变量,可以应用算法来检查它们是否相等,如果它们都相等(如你的长语句那样),则为O(N)。当它找到一个不是的时候会立即中断。