2

可能重复:
如何检查多个变量是否等于同一个值?

有没有办法写这个:

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

变成这样的东西

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

?

4

3 回答 3

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';
}

编辑:我猜史蒂夫杰索普在这里链接的副本有同样的想法

于 2013-01-03T17:21:43.963 回答
1

没有比这更清楚的方式,不。您可以在 a 中插入值set并检查 if size == 1,但是您现在拥有的是要走的路。

于 2013-01-03T17:14:40.537 回答
0

本质上,没有。

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

于 2013-01-03T17:17:46.023 回答