2013-01-03 152 views

回答

1

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

+6

虽然你的答案是“否”是正确的,但你的选择是一个糟糕的实现,因为它将O(N log N)插入一个集合中的所有元素,并且当它找到不等于大小写。 – CashCow

0

本质上没有。

如果你有一个集合,而不只是零星的变量,可以应用算法来检查它们是否全部相等,如果它们确实相等(因为你的long语句是),并且会立即中断当它发现一个不是。

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

编辑:我想史蒂夫·杰索普对链接的重复here

+0

如果每个'all_equal'都可以内联......这是可变参数模板的一个很好的使用。 – StoryTeller