2010-05-12 72 views

回答

44

std::pair使用词典对比:它会根据第一个元素进行比较。如果第一个元素的值相等,则会根据第二个元素进行比较。

在C++ 03标准的定义(部分20.2.2)是:

template <class T1, class T2> 
bool operator<(const pair<T1, T2>& x, const pair<T1, T2>& y); 

Returns: x.first < y.first || (!(y.first < x.first) && x.second < y.second). 
1

Documentation from SGI

的比较运算符。它使用字典对比:如果x的第一个元素小于y的第一个元素,则返回值为true;如果y的第一个元素小于x的第一个元素,则返回值为false。如果两者都不是这种情况,则运算符<返回比较x和y的第二个元素的结果。只有在T1和T2都小于Comparable的情况下才能使用此运算符。这是一个全局函数,而不是一个成员函数。

看起来它实际上是两种元素的组合。

6

根据我的的C++ 0x标准的副本,节20.3.3.26,std::pairoperator<定义,使得两对x和y,返回

x.first < y.first || (!(y.first < x.first) && x.second < y.second) 

我不能肯定,如果这也是2003年标准的一部分。我也应该注意到,如果元素本身不是Less Less相互比较的话,这不会被编译。

0

是的。 operator<()定义为std::pair<T1, T2>,假设T1T2本身都是可比较的。

相关问题