std::stack<T,Container>::swap
De cppreference.com
<tbody>
</tbody>
void swap( stack& other ) noexcept(/* véase más abajo */); |
(desde C++11) | |
Intercambia el contenido del adaptador de contenedor con el de other. Efectivamente llama a using std::swap; swap(c, other.c);
Parámetros
| other | - | El adaptador de contenedor con el cual intercambiar el contenido. |
Valor de retorno
(Ninguno)
Excepciones
|
En la expresión anterior, el identificador |
(desde C++11) (hasta C++17) | ||||||
|
Especificación noexcept: (desde C++11)
<tbody>
</tbody>
|
(desde C++17) |
Complejidad
La misma que el contenedor subyacente (habitualmente constante).
Notas
Algunas implementaciones (p. ej., libc++) proporcionan la función miembro swap como una extensión para modalidades anteriores a C++11.
Ejemplo
Ejecuta este código
#include <iostream>
#include <stack>
#include <string>
#include <vector>
template <typename Pila>
void imprimir(Pila pila /* pasar por valor */, int id)
{
std::cout << "s" << id << " [" << pila.size() << "]: ";
for (; !pila.empty(); pila.pop())
std::cout << pila.top() << ' ';
std::cout << (id > 1 ? "\n\n" : "\n");
}
int main()
{
std::vector<std::string>
v1{"1","2","3","4"},
v2{"Ɐ","B","Ɔ","D","Ǝ"};
std::stack s1{std::move(v1)};
std::stack s2{std::move(v2)};
imprimir(s1, 1);
imprimir(s2, 2);
s1.swap(s2);
imprimir(s1, 1);
imprimir(s2, 2);
}
Salida:
s1 [4]: 4 3 2 1
s2 [5]: Ǝ D Ɔ B Ɐ
s1 [5]: Ǝ D Ɔ B Ɐ
s2 [4]: 4 3 2 1
Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
| ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2456 | C++11 | La especificación noexcept está mal formada.
|
Se hizo funcionar. |
Véase también
(C++11) |
Especializa el algoritmo std::swap. (plantilla de función) |