La función std::is_heap() en la biblioteca de plantillas estándar de C++ se usa para verificar si un rango dado de elementos forma Max Heap o no. Devuelve True cuando los rangos de elementos dados forman Max Heap, de lo contrario, devuelve False.
Archivo de cabecera:
#include <algorithm>
Sintaxis:
is_heap(first, last)
Parámetro: Toma dos parámetros, los iteradores apuntan hacia el primer y último elemento del rango.
Valor devuelto: La función devuelve el siguiente valor:
- Verdadero: si los elementos en el rango [primero, último] forman un Max Heap.
- Falso: si los elementos en el rango [primero, último] no forman un Max Heap.
A continuación se muestra el programa para ilustrar std::is_heap() :
Programa 1:
// C++ program to illustrate // the std::is_heap() #include <algorithm> #include <iostream> #include <vector> using namespace std; // Driver Code int main() { // Given list of numbers vector<int> arr = { 3, 1, 5, 1, 9, 8 }; // Check if arr[] forms max-heap or not bool isHeap = is_heap(arr.begin(), arr.end()); if (isHeap) { cout << "Forms a Max Heap"; } else { cout << "Doesn't forms a Max Heap"; } }
Producción:
Doesn't forms a Max Heap
Programa 2:
// C++ program to illustrate the std::is_heap() #include <algorithm> #include <iostream> #include <vector> using namespace std; // Driver Code int main() { // Given list of numbers vector<int> arr = { 3, 1, 5, 1, 9, 8 }; // Check if arr[] forms max-heap or not bool isHeap = is_heap(arr.begin(), arr.end()); // isHeap is false then make Max Heap // using in built function make_heap if (!isHeap) { make_heap(arr.begin(), arr.end()); } // Else already a heap else { cout << "Already Max Heap\n"; } // Print all the elements of arr // after make Max Heap for (auto& it : arr) { cout << it << ' '; } return 0; }
Producción:
9 3 8 1 1 5
Referencia: http://www.cplusplus.com/reference/algorithm/is_heap/