Espacios de nombres
Variantes

std::is_heap_until

De cppreference.com
 
 
Biblioteca de algoritmos
Políticas de ejecución (C++17)
Operaciones de secuencia no modificantes
(C++11)(C++11)(C++11)
(C++17)
Operaciones de secuencia modificantes
Operaciones en almacenamiento no inicializado
Operaciones de partición
Operaciones de ordenación
(C++11)
Operaciones de búsqueda binaria
Operaciones de conjuntos (en rangos ordenados)
Operaciones de pila
(C++11)
Operaciones mínimo/máximo
(C++11)
(C++17)
Permutaciones
Operaciones numéricas
Bibliotecas C
 
<tbody> </tbody>
Definido en el archivo de encabezado <algorithm>
template< class RandomIt > RandomIt is_heap_until( RandomIt first, RandomIt last );
(1) (desde C++11)
template< class RandomIt, class Compare > RandomIt is_heap_until( RandomIt first, RandomIt last, Compare comp );
(2) (desde C++11)
Examina la [first, last) rango y encuentra la más amplia gama en principio first que es' montón. La primera versión de la función utiliza operator< para comparar los elementos, el segundo utiliza la función de comparación dado comp .
Original:
Examines the range [first, last) and finds the largest range beginning at first which is heap. The first version of the function uses operator< to compare the elements, the second uses the given comparison function comp.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Parámetros

first, last -
la gama de elementos a examinar
Original:
the range of elements to examine
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
comp - objeto función de comparación (es decir, un objeto que satisface los requerimientos de Compare) que devuelve ​true si el primer argumento es menor que el segundo.

La signatura de la función de comparación deberá ser equivalente a lo siguiente:

bool cmp(const Type1 &a, const Type2 &b);

Mientras que la signatura no necesita ser const &, la función no debe modificar los objetos que se le pasaron y debe admitir todos los valores de los tipos (posiblemente const) Type1 y Type2 a pesar de la categoría de valor (por consiguiente, no se permite a Type1 & , ni tampoco a Type1 a menos que para Type1 un movimiento sea equivalente a una copia (desde C++11)).
Los tipos Type1 y Type2 deben ser tales que un objeto de tipo RandomIt puede ser desreferenciado y luego convertido implícitamente a ambos. ​

Requisitos de tipo
-
RandomIt debe reunir los requerimientos de RandomAccessIterator.

Valor de retorno

El límite superior de la gama más grande de comienzo en first que es montón'. Es decir, el iterador it último para el que es amplia [first, it) montón' .
Original:
The upper bound of the largest range beginning at first which is heap. That is, the last iterator it for which range [first, it) is heap.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Complejidad

Lineal en la distancia entre first y last
Original:
Linear in the distance between first and last
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Notas

Un montón' es una serie de elementos [f,l) que tiene las siguientes propiedades:
Original:
A heap is a range of elements [f,l) that has the following properties:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
  • *f es el elemento más grande en el intervalo
    Original:
    *f is the largest element in the range
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • un elemento nuevo puede añadirse utilizando std::push_heap()
    Original:
    a new element can be added using std::push_heap()
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • el primer elemento se puede eliminar con std::pop_heap()
    Original:
    the first element can be removed using std::pop_heap()
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
La disposición real de los elementos depende de la implementación .
Original:
The actual arrangement of the elements is implementation defined.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Ejemplo

#include <iostream>
#include <algorithm>

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 (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

Ver también

(C++11)
Verifica si el rango dado es un montículo de máximos.
(plantilla de función) [editar]