std::is_heap
| Definido en el encabezado <algorithm>
|
||
template< class RandomIt >
bool is_heap( RandomIt first, RandomIt last );
|
(1) | (desde C++11) (constexpr desde C++20) |
template< class ExecutionPolicy, class RandomIt >
bool is_heap( ExecutionPolicy&& policy,
RandomIt first, RandomIt last );
|
(2) | (desde C++17) |
template< class RandomIt, class Compare >
bool is_heap( RandomIt first, RandomIt last, Compare comp );
|
(3) | (desde C++11) (constexpr desde C++20) |
template< class ExecutionPolicy, class RandomIt, class Compare >
bool is_heap( ExecutionPolicy&& policy,
RandomIt first, RandomIt last, Compare comp );
|
(4) | (desde C++17) |
Comprueba si [first, last) es un montículo.
operator<(hasta C++20)std::less{}(desde C++20).comp.policy.true:
|
|
(hasta C++20) |
|
|
(desde C++20) |
Parámetros
| first, last | - | el par de iteradores que definen el rango de elementos a verificar |
| policy | - | la política de ejecución a utilizar |
| comp | - | objeto función de comparación (es decir, un objeto que satisface los requisitos de Compare) que devuelve true si el primer argumento es menor que el segundo.La firma de la función de comparación debe ser equivalente a la siguiente:
Aunque la firma no necesita tener |
| Requisitos de tipo | ||
-RandomIt debe cumplir los requisitos de LegacyRandomAccessIterator.
| ||
-Compare debe cumplir los requisitos de Compare.
| ||
Valor de retorno
true si el rango es un montículo con respecto al comparador correspondiente, false en caso contrario.
Complejidad
Dado N como std::distance(first, last):
operator<(hasta C++20)std::less{}(desde C++20).comp.Excepciones
Las sobrecargas con un parámetro de plantilla llamado ExecutionPolicy reportan errores de la siguiente manera:
- Si la ejecución de una función invocada como parte del algoritmo lanza una excepción y
ExecutionPolicyes una de las políticas estándar, se llama a std::terminate. Para cualquier otroExecutionPolicy, el comportamiento está definido por la implementación. - Si el algoritmo no puede asignar memoria, se lanza std::bad_alloc.
Ejemplo
#include <algorithm>
#include <bit>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9};
std::cout << "initially, v:\n";
for (const auto& i : v)
std::cout << i << ' ';
std::cout << '\n';
if (!std::is_heap(v.begin(), v.end()))
{
std::cout << "making heap...\n";
std::make_heap(v.begin(), v.end());
}
std::cout << "after make_heap, v:\n";
for (auto t{1U}; const auto& i : v)
std::cout << i << (std::has_single_bit(++t) ? " | " : " ");
std::cout << '\n';
}
Salida:
initially, v:
3 1 4 1 5 9 2 6 5 3 5 8 9 7 9
making heap...
after make_heap, v:
9 | 6 9 | 5 5 9 7 | 1 1 3 5 8 3 4 2 |
Véase también
(C++11) |
encuentra el subrango más grande que es un montículo máximo (plantilla de función & objeto función de algoritmo) |
(C++20) |
|
| crea un montículo máximo a partir de un rango de elementos (plantilla de función & objeto función de algoritmo) | |
(C++20) |
|
| agrega un elemento a un montículo máximo (plantilla de función & objeto función de algoritmo) | |
(C++20) |
|
| elimina el elemento más grande de un montículo máximo (plantilla de función & objeto función de algoritmo) | |
(C++20) |
|
| convierte un montículo máximo en un rango de elementos ordenados en orden ascendente (plantilla de función & objeto función de algoritmo) | |
(C++20) |
|
(C++20) |
comprueba si el rango dado es un montículo máximo (objeto función de algoritmo) |