◐ Shell
clean mode source ↗

std::pop_heap - cppreference.com

De cppreference.com

Esta página se ha traducido por ordenador/computador/computadora de la versión en inglés de la Wiki usando Google Translate.

La traducción puede contener errores y palabras aparatosas/incorrectas. Planea sobre el texto para ver la versión original. Puedes ayudar a corregir los errores y mejorar la traducción. Para instrucciones haz clic aquí.

Definido en el archivo de encabezado <algorithm>

template< class RandomIt > void pop_heap( RandomIt first, RandomIt last );

(1)

template< class RandomIt, class Compare > void pop_heap( RandomIt first, RandomIt last, Compare comp );

(2)

Intercambia el valor en la posición first y el valor en la posición last-1 y hace que el [first, last-1) subrango en un montón'. Esto tiene el efecto de eliminar la primera (la más grande) elemento de la pila definida por el intervalo [first, last) .

Original:

Swaps the value in the position first and the value in the position last-1 and makes the subrange [first, last-1) into a heap. This has the effect of removing the first (largest) element from the heap defined by the range [first, last).

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

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:

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 que definen la pila no vacía válido para modificar

Original:

the range of elements defining the valid nonempty heap to modify

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 ValueSwappable y RandomAccessIterator.
-The type of dereferenced RandomIt must meet the requirements of MoveAssignable and MoveConstructible.

Valor de retorno

(Ninguno)

Original:

(none)

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Complejidad

A lo sumo 2 × log (N) comparaciones N=std::distance(first, last) donde .

Original:

At most 2×log(N) comparisons where N=std::distance(first, 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());

    std::cout << "v: ";
    for (auto i : v) std::cout << i << ' ';
    std::cout << '\n';

    std::pop_heap(v.begin(), v.end()); // moves the largest to the end

    std::cout << "after pop_heap: ";
    for (auto i : v) std::cout << i << ' ';
    std::cout << '\n';

    int largest = v.back();
    v.pop_back();  // actually removes the largest element
    std::cout << "largest element: " << largest << '\n';

    std::cout << "heap without largest: ";
    for (auto i : v) std::cout << i << ' ';
    std::cout << '\n';
}

Salida:

v: 9 5 4 1 1 3 
after pop_heap: 5 3 4 1 1 9 
largest element: 9
heap without largest: 5 3 4 1 1

Ver también

Agrega un elemento a un montículo de máximos.
(plantilla de función) [editar]