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