std::iter_swap (3) Linux Manual Page
std::iter_swap – std::iter_swap
Synopsis
Defined in header<algorithm>
template <class ForwardIt1, class ForwardIt2>
(until C++ 20)
void iter_swap(ForwardIt1 a, ForwardIt2 b);
template <class ForwardIt1, class ForwardIt2>
(since C++ 20)
constexpr void iter_swap(ForwardIt1 a, ForwardIt2 b);
Swaps the values of the elements the given iterators are pointing to.
Parameters
a, b – iterators to the elements to swap
Type requirements
–
ForwardIt1, ForwardIt2 must meet the requirements of LegacyForwardIterator.
–
*a, *b must meet the requirements of Swappable.
Return value
(none)
Complexity
constant
Possible implementation
Example
The following is an implementation of selection sort in C++
// Run this code
#include <random>
#include <vector>
#include <iostream>
#include <algorithm>
#include <functional>
template <class ForwardIt>
void selection_sort(ForwardIt begin, ForwardIt end)
{
for (ForwardIt i = begin; i != end; ++i)
std::iter_swap(i, std::min_element(i, end));
}
int main()
{
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dist(-10, 10);
std::vector<int> v;
generate_n(back_inserter(v), 20, bind(dist, gen));
std::cout << "Before sort: ";
for (auto e : v)
std::cout << e << " ";
selection_sort(v.begin(), v.end());
std::cout << "\nAfter sort: ";
for (auto e : v)
std::cout << e << " ";
std::cout << '\n';
}
Output:
See also
swap (function template)
swap_ranges (function template)
