Bibliothèque d'algorithmes C ++ - Fonction lexicographical_compare ()

La description

La fonction C ++ std::algorithm::lexicographical_compare()teste si une plage est lexicographiquement inférieure à une autre ou non. Une comparaison lexicographique est le type de comparaison généralement utilisé pour trier les mots par ordre alphabétique dans les dictionnaires.

Déclaration

Voici la déclaration de la fonction std :: algorithm :: lexicographical_compare () sous forme d'en-tête std :: algorithme.

C ++ 98

template <class InputIterator1, class InputIterator2, class Compare>
bool lexicographical_compare(InputIterator1 first1, InputIterator1 last1,
   InputIterator2 first2, InputIterator2 last2,Compare comp);

Paramètres

  • first1 - Entrer l'itérateur à la position initiale de la première séquence.

  • last1 - Entrer l'itérateur à la position finale de la première séquence.

  • first2 - Entrer l'itérateur à la position initiale de la deuxième séquence.

  • last2 - Entrer l'itérateur à la position finale de la deuxième séquence.

  • comp - Une fonction binaire qui accepte deux arguments et renvoie bool.

Valeur de retour

Renvoie true si une plage est lexicographiquement inférieure à une seconde, sinon renvoie false.

Des exceptions

Lève une exception si la fonction binaire ou une opération sur un itérateur lève une exception.

Veuillez noter que des paramètres non valides provoquent un comportement non défini.

Complexité temporelle

2 * min (N1, N2) où N1 = std :: distance (first1, last1) et N2 = std :: distance (first2, last2).

Exemple

L'exemple suivant montre l'utilisation de la fonction std :: algorithm :: lexicographical_compare ().

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

using namespace std;

bool ignore_case(string s1, string s2) {
   return true;
}

int main(void) {
   vector<string> v1 = {"one", "two"};
   vector<string> v2 = {"One", "Two", "Three"};
   bool result;

   result = lexicographical_compare(v1.begin(), v1.end(),
            v2.begin(), v2.end());

   if (result == false)
      cout << "v1 is not less than v2." << endl;

   result = lexicographical_compare(v1.begin(), v1.end(),
               v2.begin(), v2.end(), ignore_case);

   if (result == true)
      cout << "v1 is less than v2." << endl;

   return 0;
}

Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant -

v1 is not less than v2.
v1 is less than v2.