std::is_heap_until
| Definido en el encabezado <algorithm>
|
||
template< class RandomIt >
RandomIt is_heap_until( RandomIt first, RandomIt last );
|
(1) | (desde C++11) (constexpr desde C++20) |
template< class ExecutionPolicy, class RandomIt >
RandomIt is_heap_until( ExecutionPolicy&& policy,
RandomIt first, RandomIt last );
|
(2) | (desde C++17) |
template< class RandomIt, class Compare >
RandomIt is_heap_until( RandomIt first, RandomIt last, Compare comp );
|
(3) | (desde C++11) (constexpr desde C++20) |
template< class ExecutionPolicy, class RandomIt, class Compare >
RandomIt is_heap_until( ExecutionPolicy&& policy,
RandomIt first, RandomIt last, Compare comp );
|
(4) | (desde C++17) |
Examina el rango [first, last) y encuentra el rango más grande que comienza en first el cual 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 examinar |
| policy | - | la política de ejecución a usar |
| 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:
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
El último iterador it para el cual el rango [first, it) es un montículo.
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 <iostream>
#include <vector>
int main()
{
std::vector<int> v{3, 1, 4, 1, 5, 9};
std::make_heap(v.begin(), v.end());
// probably mess up the heap
v.push_back(2);
v.push_back(6);
auto heap_end = std::is_heap_until(v.begin(), v.end());
std::cout << "all of v: ";
for (const auto& i : v)
std::cout << i << ' ';
std::cout << '\n';
std::cout << "only heap: ";
for (auto i = v.begin(); i != heap_end; ++i)
std::cout << *i << ' ';
std::cout << '\n';
}
Salida:
all of v: 9 5 4 1 1 3 2 6
only heap: 9 5 4 1 1 3 2
Véase también
(C++11) |
comprueba si el rango dado 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) |
|
| añade 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) |
encuentra el subrango más grande que es un montículo máximo (objeto función de algoritmo) |