可能重复:
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 ...)
答案 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)
。当它找到一个不是的时候会立即中断。