operator==,!=,<,<=,>,>=(std::pair)

来自cppreference.com
< cpp‎ | utility‎ | pair
定义于头文件 <utility>
template< class T1, class T2 >
bool operator==( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
(1) (C++14 前)
template< class T1, class T2 >
constexpr bool operator==( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
(1) (C++14 起)
template< class T1, class T2 >
bool operator!=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
(2) (C++14 前)
template< class T1, class T2 >
constexpr bool operator!=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
(2) (C++14 起)
template< class T1, class T2 >
bool operator<( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
(3) (C++14 前)
template< class T1, class T2 >
constexpr bool operator<( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
(3) (C++14 起)
template< class T1, class T2 >
bool operator<=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
(4) (C++14 前)
template< class T1, class T2 >
constexpr bool operator<=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
(4) (C++14 起)
template< class T1, class T2 >
bool operator>( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
(5) (C++14 前)
template< class T1, class T2 >
constexpr bool operator>( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
(5) (C++14 起)
template< class T1, class T2 >
bool operator>=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
(6) (C++14 前)
template< class T1, class T2 >
constexpr bool operator>=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
(6) (C++14 起)
1-2) 测试 lhs 和 rhs 的两个元素是否均相等,即比较 lhs.firstrhs.firstlhs.secondrhs.second
3-6) 按字典序比较 lhsrhs ,即比较首元素,然后仅若它们相等,再比较第二元素。

[编辑] 参数

lhs, rhs - 要比较的 pair

[编辑] 返回值

1) 若 lhs.first == rhs.firstlhs.second == rhs.second 则为 true ,否则为 false

2) 若 lhs.first != rhs.firstlhs.second != rhs.second 则为 true , 否则为 false

3) 若 lhs.first<rhs.first 则返回 true 。否则,若 rhs.first<lhs.first 则返回 false 。否则,若 lhs.second<rhs.second 则返回 true 。否则返回 false

4) !(rhs < lhs)

5) rhs < lhs

6) !(lhs < rhs)

[编辑] 示例

因为 operator< 为 pair 定义,故 pair 的容器能排序。

#include <iostream>
#include <utility>
#include <vector>
#include <algorithm>
#include <string>
 
int main()
{
    std::vector<std::pair<int, std::string>> v = { {2, "baz"},
                                                   {2, "bar"},
                                                   {1, "foo"} };
    std::sort(v.begin(), v.end());
 
    for(auto p: v) {
        std::cout << "(" << p.first << "," << p.second << ")\n";
    }
}

输出:

(1,foo)
(2,bar)
(2,baz)