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

La description

La fonction C ++ std::algorithm::equal_range()renvoie une plage d'éléments qui correspond à une clé spécifique. Il utilise l' opérateur < pour la comparaison. L'élément de la plage doit être trié.

Déclaration

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

C ++ 98

template <class ForwardIterator, class T>
pair<ForwardIterator,ForwardIterator>
equal_range (ForwardIterator first, ForwardIterator last, const T& val);

Paramètres

  • first - Transférer l'itérateur à la position initiale.

  • last - Transférer l'itérateur vers la position finale.

  • val - valeur pour comparer les éléments.

Valeur de retour

Renvoie une sous-plage si l'élément est trouvé. Si val n'est équivalent à aucune valeur de la plage, la sous-plage renvoyée a une longueur de zéro, les deux itérateurs pointant vers la valeur la plus proche supérieure à val , le cas échéant, ou à la dernière, si val compare plus grand que tous les éléments du intervalle.

Des exceptions

Lève une exception si la comparaison d'éléments 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

Environ 2 * log2 (n) +1 élément.

Exemple

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

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

using namespace std;

int main(void) {
   vector<int> v = {1, 2, 2, 2, 2};
   int cnt = 0;

   auto range = equal_range(v.begin(), v.end(), 2);

   for (auto it = range.first; it != range.second; ++it)
      ++cnt;
	
   cout << "Element 2 occurs " << cnt << " times." << endl;

   return 0;
}

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

Element 2 occurs 4 times.