Freigeben über


lexicographical_compare

Vergleicht Element durch Element zwischen zwei Sequenzen, um zu bestimmen, das kleiner der zwei ist.

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

Parameter

  • _First1
    Ein Eingabeiterator, der die Position des ersten Elements im ersten Bereich behandelt verglichen werden.

  • _Last1
    Ein Eingabeiterator, der die Position eine hinter dem letzten Element im ersten Bereich behandelt verglichen werden.

  • _First2
    Ein Eingabeiterator, der die Position des ersten Elements im zweiten Bereich behandelt verglichen werden.

  • _Last2
    Ein Eingabeiterator, der die Position eine hinter dem letzten Element im zweiten Bereich behandelt verglichen werden.

  • _Comp
    Benutzerdefiniertes Prädikatfunktionsobjekt, das den Sinn definiert, in dem ein Element kleiner als ein anderes ist. Ein binärer Prädikat akzeptiert zwei Argumente und gibt bei Erfüllung true zurück und false, wenn es nicht erfüllt wird.

Rückgabewert

true, wenn der erste lexikografisch Bereich weniger ist, als der zweite Bereich; andernfalls false.

Hinweise

Ein lexikografischer Vergleich zwischen Sequenzen vergleicht sie Element durch Element bis:

  • Es werden zwei gleichwertige ungleiche Elemente, und das Ergebnis des Vergleichs wird als Ergebnis des Vergleichs zwischen Sequenzen übernommen.

  • Keine Ungleichheiten gefunden werden, aber eine Sequenz hat mehr Elemente als die andere, und je kürzere Sequenz als kleiner als gilt umso längeren Sequenz.

  • Keine Ungleichheiten gefunden werden und Sequenzen haben die gleiche Anzahl von Elementen und sodass die Sequenzen gleich und das Ergebnis des Vergleichs ist falsch.

Beispiel

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

Anforderungen

Header: <algorithm>

Namespace: std

Siehe auch

Referenz

Standardvorlagenbibliothek