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

La description

La fonction C ++ std::algorithm::is_heap_until()trouve le premier élément de la séquence qui enfreint la condition de tas max. Il utilise l' opérateur < pour la comparaison.

Déclaration

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

C ++ 11

template <class RandomAccessIterator>
RandomAccessIterator is_heap_until(RandomAccessIterator first,
   RandomAccessIterator last);

Paramètres

  • first - Itérateur à accès aléatoire à la position initiale.

  • last - Itérateur d'accès aléatoire à la position finale.

Valeur de retour

Renvoie un itérateur vers le premier élément qui viole la condition de tas max. Si la séquence entière est un tas max valide, elle retourne en dernier .

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

Linéaire.

Exemple

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

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

using namespace std;

int main(void) {
   vector<int> v = {4, 3, 5, 1, 2};

   auto result = is_heap_until(v.begin(), v.end());

   cout << *result  << " is the first element which "
        << "violates the max heap." << endl;

   v = {5, 4, 3, 2, 1};

   result = is_heap_until(v.begin(), v.end());

   if (result == end(v))
      cout << "Entire range is valid heap." << endl;

   return 0;
}

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

5 is the first element which violates the max heap.
Entire range is valid heap.