Pair Logical Operator (STL Sample)

The sample code below illustrates how to use the pair logical operator STL function in Visual C++.

Required Header:
< utility >

Prototype:

It is interesting to note that only the < and == operators are
necessary in order to define all of the logical operators.

template<class _T1, class _T2> inline
     bool operator==(const pair<_T1, _T2>& _X,
     const pair<_T1, _T2>& _Y)
     {return (_X.first == _Y.first && _X.second == _Y.second); }

template<class _T1, class _T2> inline
     bool operator<(const pair<_T1, _T2>& _X,
     const pair<_T1, _T2>& _Y)
     {return (_X.first < _Y.first ||
     !(_Y.first < _X.first) && _X.second < _Y.second); }

Note: The class/parameter names in the prototype do not match the version in the header file. Some have been modified to improve readability.

Description:
The functions are described in the comments section of the sample.

Sample Code:

/////////////////////////////
// Compile options needed: none
//
// paircomp.cpp : Illustrates several comparison
//                operators used to compare two
//                pair objects.
//
// Functions:
//
//    operator== - returns true if two pair objects are identical.
//
//    operator!= - returns true if two pair objects are not identical.
//
//    operator<  - returns true for (A < B) if pair object A is less
//                 than pair object B.
//
//    operator<= - returns true for (A <= B) if pair object A is less
//                 than or equal to pair object B.
//
//    operator>  - returns true for (A > B) if pair object A is greater
//                 than pair object B.
//
//    operator>= - returns true for (A >= B) if pair object A is greater
//                 than or equal to pair object B.
/////////////////////////////

#include <iostream>
#include <utility>

using namespace std ;

/* STL pair data type containing int and float */

typedef struct pair<int, float> PAIR_IF;

void main(void)
{
  PAIR_IF A(10,3.14);
  PAIR_IF B(18,3.14);
  PAIR_IF C(10,6.28);
  PAIR_IF D(10,3.14);

/* show pair values */

  cout << "A = ( " << A.first << " , " << A.second << " )" << endl;
  cout << "B = ( " << B.first << " , " << B.second << " )" << endl;
  cout << "C = ( " << C.first << " , " << C.second << " )" << endl;
  cout << "D = ( " << D.first << " , " << D.second << " )" << endl;

/* operator== */

  if (A==D)
    cout << "A and D are equal" << endl;
  else
    cout << "A and D are not equal" << endl;

/* operator!= */

  if (B!=C)
    cout << "B and C are not equivalent" << endl;
  else
    cout << "B and C are equivalent" << endl;

/* operator> */

  if (A>C)
    cout << "A is greater than C" << endl;
  else
    cout << "A is not greater than C" << endl;

/* operator>= */

  if (A>=C)
    cout << "A is greater than or equal to C" << endl;
  else
    cout << "A is not greater than or equal to C" << endl;

/* operator< */

  if (C<D)
    cout << "C is less than D" << endl;
  else
    cout << "C is not less than D" << endl;

/* operator<= */

  if (C<D)
    cout << "C is less than or equal to D" << endl;
  else
    cout << "C is not less than or equal to D" << endl;
}

 

Program Output is:

A = ( 10 , 3.14 )
B = ( 18 , 3.14 )
C = ( 10 , 6.28 )
D = ( 10 , 3.14 )
A and D are equal
B and C are not equivalent
A is not greater than C
A is not greater than or equal to C
C is not less than D
C is not less than or equal to D