std::stack<T,Container>::swap
De cppreference.com
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);
Contenido |
[editar] Parámetros
other | - | El adaptador de contenedor con el cual intercambiar el contenido. |
[editar] Valor de retorno
(Ninguno)
[editar] Excepciones
En la expresión anterior, el identificador |
(desde C++11) (hasta C++17) |
(desde C++17) |
[editar] Complejidad
La misma que el contenedor subyacente (habitualmente constante).
[editar] Notas
Algunas implementaciones (p. ej., libc++) proporcionan la función miembro swap
como una extensión para modalidades anteriores a C++11.
[editar] 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
[editar] 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. |
[editar] Véase también
(C++11) |
Especializa el algoritmo std::swap. (plantilla de función) |