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 usingstd::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) |