lexicographical_compare en C++

C++ STL ofrece muchas utilidades para resolver problemas básicos de la vida común. La comparación de valores siempre es necesaria, pero a veces también necesitamos comparar las strings. Por lo tanto, este artículo tiene como objetivo explicar acerca de “ lexicographical_compare() ” que permite comparar strings . Esta función se define en el encabezado » algoritmo «. Tiene dos implementaciones.

Sintaxis 1: lexicographical_compare(iter1 beg1, iter1 end1, iter2 beg2, iter2 end2)

Template:
template 
  bool lexicographical_compare(iter1 beg1, iter1 end1, iter2 beg2, iter2 end2)
Parameters : 
beg1 :  Input iterator to initial position of first sequence.
end1 :  Input iterator to final position of first sequence.

beg2 :  Input iterator to initial position of second sequence.
end2 :  Input iterator to final position of second sequence.

Return value : 
Returns a boolean true, if range1 is strictly lexicographically 
smaller than range2 else returns a false.
// C++ code to demonstrate the working of 
// lexicographical_compare()
  
#include<iostream>
#include<algorithm> // for lexicographical_compare()
using namespace std;
  
int main()
{
    // initializing char arrays
    char one[] = "geeksforgeeks";
    char two[] = "gfg";
      
    // using lexicographical_compare for checking 
    // is "one" is less than "two"
    if( lexicographical_compare(one, one+13, two, two+3))
    {
        cout << "geeksforgeeks is lexicographically less than gfg";
          
    }
    else
    {
        cout << "geeksforgeeks is not lexicographically less than gfg";
          
    }
      
}

Producción:

geeksforgeeks is lexicographically less than gfg

Sintaxis 2: lexicographical_compare(iter1 beg1, iter1 end1, iter2 beg2, iter2 end2, Compare comp)

Template:
template 
  bool lexicographical_compare(iter1 beg1, iter1 end1, iter2 beg2, iter2 end2)
Parameters : 
beg1 :  Input iterator to initial position of first sequence.
end1 :  Input iterator to final position of first sequence.

beg2 :  Input iterator to initial position of second sequence.
end2 :  Input iterator to final position of second sequence.

comp : The comparator function that returns a boolean
true/false of the each elements compared. This function 
accepts two arguments. This can be function pointer or 
function object and cannot change values.

Return value : 
Returns a boolean true, if range1 is strictly lexicographically smaller 
than range2 else returns a false.
// C++ code to demonstrate the working of 
// lexicographical_compare()
  
#include<iostream>
#include<algorithm> // for lexicographical_compare()
using namespace std;
  
// helper function to convert all into lower case:
bool comp (char s1, char s2)
{
    return tolower(s1)<tolower(s2);
}
  
int main()
{
    // initializing char arrays
    char one[] = "geeksforgeeks";
    char two[] = "Gfg";
      
    // using lexicographical_compare for checking 
    // is "one" is less than "two"
    // returns false as "g" has larger ASCII value than "G"
    if( lexicographical_compare(one, one+13, two, two+3))
    {
        cout << "geeksforgeeks is lexicographically less than Gfg\n";
          
    }
    else
    {
        cout << "geeksforgeeks is not lexicographically less than Gfg\n";
          
    }
      
    // using lexicographical_compare for checking 
    // is "one" is less than "two"
    // returns true this time as all converted into lowercase
    if( lexicographical_compare(one, one+13, two, two+3, comp))
    {
        cout << "geeksforgeeks is lexicographically less  ";
        cout << "than Gfg( case-insensitive )";
          
    }
    else
    {
        cout << "geeksforgeeks is not lexicographically less ";
        cout<< "than Gfg( case-insensitive )";
          
    }
      
}

Producción:

geeksforgeeks is not lexicographically less than Gfg
geeksforgeeks is lexicographically less than Gfg( case-insensitive )

Posible aplicación: la comparación de strings se puede usar generalmente en el diccionario , donde necesitamos colocar palabras en orden lexicográfico. Un ejemplo de esto puede ser encontrar la palabra que aparece primero en el diccionario entre un conjunto dado de palabras.

// C++ code to demonstrate the application of 
// lexicographical_compare()
  
#include<bits/stdc++.h>
using namespace std;
  
int main()
{
    // initializing char arrays
    char list[][100]={
        {'a','b','a','c','u','s'},
        {'a','p','p','l','e'},
        {'c','a','r'},
        {'a','b','b','a'}
    };
      
    char min[100] = "zzzzzz";
      
    // using lexicographical_compare for checking 
    // the smallest
    for (int i=0; i<4; i++)
    { 
        if( lexicographical_compare(list[i], list[i] 
        + strlen(list[i]), min, min+strlen(min)))
    {
        strcpy(min,list[i]);
    }
    }
      
    // prints "abacus"
    cout << "The smallest string is : ";
    for(int i = 0; min[i]!='\0'; i++)
    {
        cout<<min[i];
    }
      
      
}

Producción:

The smallest string is : abacus

Este artículo es una contribución de Manjeet Singh . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *