Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés
Se recomienda usar Visual Studio 2017

lexicographical_compare

 

Compara dos secuencias elemento a elemento para determinar cuál es menor de los dos.


template<class InputIterator1, class InputIterator2>
   bool lexicographical_compare(
      InputIterator1 
_First1
,
      InputIterator1 
_Last1
,
      InputIterator2 
_First2
,
      InputIterator2 
_Last2
   );
template<class InputIterator1, class InputIterator2, class BinaryPredicate>
   bool lexicographical_compare(
      InputIterator1 
_First1
,
      InputIterator1 
_Last1
, 
      InputIterator2 
_First2
, 
      InputIterator2 
_Last2,
      BinaryPredicate 
_Comp
   );

_First1

Un iterador de entrada direcciona la posición del primer elemento del primer intervalo se va a comparar.

_Last1

Un iterador de entrada direcciona la posición uno después del último elemento del primer intervalo se va a comparar.

_First2

Un iterador de entrada direcciona la posición del primer elemento en el segundo intervalo se va a comparar.

_Last2

Un iterador de entrada direcciona la posición uno después del último elemento en el segundo intervalo se va a comparar.

_Comp

Objeto de función de predicado definido por el usuario que define el sentido en el que un elemento es menor que otro. Un predicado binario toma dos argumentos y devuelve true si se cumplen y false si no se cumplen.

true si el primer intervalo es lexicográficamente menor que el segundo intervalo; en caso contrario false.

La comparación lexicográfica entre secuencias compara elemento hasta que:

  • Encuentra dos elementos correspondientes distintas y el resultado de la comparación se realiza como resultado de la comparación entre las secuencias.

  • No se encuentran ningún desigualdades, pero una secuencia tiene más elementos que el otro y la secuencia más corta se considera menor que la secuencia más larga.

  • No se encuentran ningún desigualdades y las secuencias tienen el mismo número de elementos y así las secuencias son iguales y el resultado de la comparación es false.

Ejemplo

// alg_lex_comp.cpp
// compile with: /EHsc
#include <vector>
#include <list>
#include <algorithm>
#include <iostream>

// Return whether second element is twice the first
bool twice ( int elem1, int elem2 )
{
   return 2 * elem1 < elem2;
}

int main( )
{
   using namespace std;
   vector <int> v1, v2;
   list <int> L1;
   vector <int>::iterator Iter1, Iter2;
   list <int>::iterator L1_Iter, L1_inIter;

   int i;
   for ( i = 0 ; i <= 5 ; i++ )
   {
      v1.push_back( 5 * i );
   }
   int ii;
   for ( ii = 0 ; ii <= 6 ; ii++ )
   {
      L1.push_back( 5 * ii );
   }

   int iii;
   for ( iii = 0 ; iii <= 5 ; iii++ )
   {
      v2.push_back( 10 * iii );
   }

   cout << "Vector v1 = ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")" << endl;

   cout << "List L1 = ( " ;
   for ( L1_Iter = L1.begin( ) ; L1_Iter!= L1.end( ) ; L1_Iter++ )
      cout << *L1_Iter << " ";
   cout << ")" << endl;

   cout << "Vector v2 = ( " ;
   for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
      cout << *Iter2 << " ";
      cout << ")" << endl;

   // Self lexicographical_comparison of v1 under identity
   bool result1;
   result1 = lexicographical_compare (v1.begin( ), v1.end( ),
                  v1.begin( ), v1.end( ) );
   if ( result1 )
      cout << "Vector v1 is lexicographically_less than v1." << endl;
   else
      cout << "Vector v1 is not lexicographically_less than v1." << endl;

   // lexicographical_comparison of v1 and L2 under identity
   bool result2;
   result2 = lexicographical_compare (v1.begin( ), v1.end( ),
                  L1.begin( ), L1.end( ) );
   if ( result2 )
      cout << "Vector v1 is lexicographically_less than L1." << endl;
   else
      cout << "Vector v1 is lexicographically_less than L1." << endl;

   bool result3;
   result3 = lexicographical_compare (v1.begin( ), v1.end( ),
                  v2.begin( ), v2.end( ), twice );
   if ( result3 )
      cout << "Vector v1 is lexicographically_less than v2 "
           << "under twice." << endl;
   else
      cout << "Vector v1 is not lexicographically_less than v2 "
           << "under twice." << endl;
}
Vector v1 = (0 5 10 15 20 25) lista L1 = (0 5 10 15 20 25 30) Vector v2 = (0 10 20 30 40 50) v1 de Vector no está lexicographically_less que v1. Vector v1 es lexicographically_less que L1. Vector v1 no es lexicographically_less de v2 en dos veces.

Requisitos

Encabezado: <algorithm>

Espacio de nombres: std

Mostrar: