std::iter_swap(std::reverse_iterator)
De cppreference.com
template< std::indirectly_swappable<Iter> Iter2 >
friend constexpr void iter_swap( const reverse_iterator& x,
const std::reverse_iterator<Iter2>& y )
noexcept(/* véase más abajo */);
|
(desde C++20) | |
Intercambia los objetos a los que apuntan los dos iteradores subyacentes.
Equivalente a auto tmp_x = x.base();auto tmp_y = y.base();ranges::iter_swap(--tmp_x, --tmp_y);.
Esta plantilla de función no es visible a una búsqueda no calificada o calificada, y puede encontrarse solamente mediante la búsqueda dependiente de argumento cuando es una clase asociada de los argumentos.
std::reverse_iterator<Iter>
Parámetros
| x, y | - | Iteradores reversibles de los elementos a intercambiar. |
Complejidad
Constante.
Excepciones
Especificación noexcept: (desde C++11)
noexcept(
std::is_nothrow_copy_constructible_v<Iter> &&
std::is_nothrow_copy_constructible_v<Iter2> &&
noexcept(ranges::iter_swap(--std::declval<Iter&>(), --std::declval<Iter2&>()))
)
|
||
Ejemplo
Ejecuta este código
#include <iostream>
#include <iterator>
#include <list>
#include <vector>
int main()
{
std::vector v{1, 2, 3};
std::list l{4, 5, 6};
std::reverse_iterator<std::vector<int>::iterator> r1{v.rbegin()};
std::reverse_iterator<std::list<int>::iterator> r2{l.rbegin()};
std::cout << *r1 << ' ' << *r2 << '\n';
iter_swap(r1, r2); // búsqueda dependiente de argumento
std::cout << *r1 << ' ' << *r2 << '\n';
}
Salida:
3 6
6 3
Véase también
| Intercambia los valores de dos objetos (plantilla de función) | |
| Intercambia dos rangos de elementos. (plantilla de función) | |
| Intercambia los elementos a los que apuntan dos iteradores (plantilla de función) | |
(C++20) |
Intercambia los valores referenciados por dos objetos desreferenciables. (objeto punto de personalización) |
(C++20) |
Intercambia los objetos a los que apuntan dos iteradores subyacentes (plantilla de función) |