可能重复:
How can I check whether multiple variables are equal to the same value?C++ - if语句简化
有没有写这个办法:
if ((var1==var2) && (var2==var3) && (var3==var4) ...)
弄成这个样子
if (var1==var2==var3==var4 ...)
?
可能重复:
How can I check whether multiple variables are equal to the same value?C++ - if语句简化
有没有写这个办法:
if ((var1==var2) && (var2==var3) && (var3==var4) ...)
弄成这个样子
if (var1==var2==var3==var4 ...)
?
没有比这更清楚的方式,没有。例如,您可以在set
中插入值,并检查size == 1
是否有效,但您现在拥有的是要走的路。
虽然你的答案是“否”是正确的,但你的选择是一个糟糕的实现,因为它将O(N log N)插入一个集合中的所有元素,并且当它找到不等于大小写。 – CashCow
本质上没有。
如果你有一个集合,而不只是零星的变量,可以应用算法来检查它们是否全部相等,如果它们确实相等(因为你的long语句是),并且会立即中断当它发现一个不是。
在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';
}
编辑:我想史蒂夫·杰索普对链接的重复here
如果每个'all_equal'都可以内联......这是可变参数模板的一个很好的使用。 – StoryTeller
简短的回答这个同样的想法:没有。 –
简答:是的,但不是一个明智的想法 –
@ K-ballo:是吗?什么? –