Espacios de nombres
Variantes
Acciones

std::swap(std::stack)

De cppreference.com
< cpp‎ | container‎ | stack
 
 
 
 
Definido en el archivo de encabezado <...>
template< class T, class Container >

void swap( std::stack<T, Container>& lhs,

           std::stack<T, Container>& rhs );
(desde C++11)
(hasta C++17)
template< class T, class Container >

void swap( std::stack<T, Container>& lhs,
           std::stack<T, Container>& rhs )

               noexcept(/* véase más abajo */);
(desde C++17)
Especializa el algoritmo std::swap para std::stack. Intercambia el contenido de lhs y rhs. Llama a lhs.swap(rhs).

Esta sobrecarga solo participa en la resolución de sobrecargas si std::is_swappable_v<Container> es true.

(desde C++17)

Contenido

[editar] Parámetros

lhs, rhs - Los contenedores cuyo contenido hay que intercambiar.

[editar] Valor de retorno

(Ninguno)

[editar] Complejidad

La misma que intercambiar los contenedores subyacentes.

Excepciones

Especificación noexcept:   (desde C++11)
noexcept(noexcept(lhs.swap(rhs)))
(desde C++17)

Notas

Aunque las sobrecargas de std::swap para adaptadores de contenedor se introdujeron en C++11, los adaptadores de contenedor ya pueden intercambiarse mediante std::swap en C++98. Estas llamadas a std::swap suelen tener una complejidad de tiempo lineal, pero se puede proporcionar una complejidad mejor.

[editar] Ejemplo

#include <algorithm>
#include <iostream>
#include <...>
 
int main()
{
    std::stack<int> alice;
    std::stack<int> bob;
 
    auto print = [](const auto& title, const auto& cont)
    {
        std::cout << title << " size=" << cont.size();
        std::cout << " top=" << cont.top() << '\n';
    };
 
    for (int i = 1; i < 4; ++i)
        alice.push(i);
    for (int i = 7; i < 11; ++i)
        bob.push(i);
 
    // Imprimir estado antes del intercambio
    print("Alice:", alice);
    print("Bobby:", bob);
 
    std::cout << "-- INTERCAMBIO\n";
    std::swap(alice, bob);
 
    // Imprimir estado después del intercambio
    print("Alice:", alice);
    print("Bobby:", bob);
}

Salida:

Alice: size=3 top=3
Bobby: size=4 top=10
-- INTERCAMBIO
Alice: size=4 top=10
Bobby: size=3 top=3

[editar] Véase también

(C++11)
Intercambia el contenido.
(función miembro pública) [editar]