Compartir a través de


Pair Logical Operator

Muestra cómo utilizar la función de biblioteca de plantillas estándar del operador lógico (STL) de pares en Visual C++.

[!NOTA]

Sólo operator< y operator== son necesarios para definir todos los operadores lógicos.

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
   ); }

Comentarios

[!NOTA]

La clase y los nombres de parámetro en el prototipo no coincide con la versión del archivo de encabezado.Algunos se han modificado para mejorar la legibilidad.

Las funciones se describen en la sección de comentarios de ejemplo.

Ejemplo

// paircomp.cpp
// compile with: /EHsc
// 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;

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

/* 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;
}

Output

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

Requisitos

encabezado: <utilidad>

Vea también

Conceptos

Ejemplos de biblioteca de plantillas estándar