iter_swap(std::counted_iterator) - cppreference.com (original) (raw)
Swaps the objects pointed to by two underlying iterators. The behavior is undefined if either x.count() or y.count() is equal to 0.
The function body is equivalent to: ranges::iter_swap(x.base(), y.base());.
This function template is not visible to ordinary unqualified or qualified lookup, and can only be found by argument-dependent lookup when std::counted_iterator<I> is an associated class of the arguments.
[edit] Parameters
| x, y | - | iterator adaptors to the elements to swap |
|---|
[edit] Return value
(none)
[edit] Complexity
Constant.
[edit] Example
#include #include #include #include int main() { std::vector p{1, 2, 3, 4}, q{5, 6, 7, 8}; std::counted_iterator<std::vector::iterator> ip{p.begin(), 2}; std::counted_iterator<std::vector::iterator> iq{q.begin(), 3}; std::cout << *ip << ' ' << *iq << '\n'; iter_swap(ip, iq); // ADL std::cout << *ip << ' ' << *iq << '\n'; std::list x{0, 1, 3}; std::counted_iterator<std::list::iterator> ix{x.begin(), 2}; // iter_swap(ip, ix); // error: not indirectly swappable }
Output:
[edit] See also
| | swaps the values of two objects (function template) [edit] | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | swaps two ranges of elements (function template) [edit] | | | swaps the elements pointed to by two iterators (function template) [edit] | | | swaps the values referenced by two dereferenceable objects(customization point object)[edit] | | | casts the result of dereferencing the underlying iterator to its associated rvalue reference type (function) [edit] |