NAME

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

Synopsis


Defined in header <utility>
template< class T1, class T2 > (1) (until C++14)
bool operator==( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
template< class T1, class T2 > (1) (since C++14)
constexpr bool operator==( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
template< class T1, class T2 > (2) (until C++14)
bool operator!=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
template< class T1, class T2 > (2) (since C++14)
constexpr bool operator!=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
template< class T1, class T2 > (3) (until C++14)
bool operator<( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
template< class T1, class T2 > (3) (since C++14)
constexpr bool operator<( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
template< class T1, class T2 > (4) (until C++14)
bool operator<=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
template< class T1, class T2 > (4) (since C++14)
constexpr bool operator<=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
template< class T1, class T2 > (5) (until C++14)
bool operator>( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
template< class T1, class T2 > (5) (since C++14)
constexpr bool operator>( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
template< class T1, class T2 > (6) (until C++14)
bool operator>=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );
template< class T1, class T2 > (6) (since C++14)
constexpr bool operator>=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs );


1-2) Tests if both elements of lhs and rhs are equal, that is, compares lhs.first with rhs.first and lhs.second with rhs.second
3-6) Compares lhs and rhs lexicographically, that is, compares the first elements and only if they are equivalent, compares the second elements.

Parameters


lhs, rhs - pairs to compare

Return value


1) true if both lhs.first == rhs.first and lhs.second == rhs.second, otherwise false
2) !(lhs == rhs)
3) If lhs.first<rhs.first, returns true. Otherwise, if rhs.first<lhs.first, returns false. Otherwise, if lhs.second<rhs.second, returns true. Otherwise, returns false.
4) !(rhs < lhs)
5) rhs < lhs
6) !(lhs < rhs)

Example


Because operator< is defined for pairs, containers of pairs can be sorted.
// Run this code


  #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";
      }
  }

Output:


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