2010-05-12 52 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本身都是可比較的。

相關問題