table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 
| iter_swap(std::counted_iterator)(3) | C++ Standard Libary | iter_swap(std::counted_iterator)(3) | 
NAME¶
iter_swap(std::counted_iterator) - iter_swap(std::counted_iterator)
Synopsis¶
template< std::indirectly_swappable<I> I2 >
  
   friend constexpr void
  
   iter_swap( const counted_iterator& x, const (since C++20)
  
   std::counted_iterator<I2>& y )
  
   noexcept(noexcept(ranges::iter_swap(x.base(),
  
   y.base())));
  
   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.
Parameters¶
x, y - iterator adaptors to the elements to swap
Return value¶
(none)
Complexity¶
Constant.
Example¶
// Run this code
  
   #include <iostream>
  
   #include <iterator>
  
   #include <list>
  
   #include <vector>
  
   int main()
  
   {
  
   std::vector p{1, 2, 3, 4},
  
   q{5, 6, 7, 8};
  
   std::counted_iterator<std::vector<int>::iterator> ip{p.begin(),
    2};
  
   std::counted_iterator<std::vector<int>::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<int>::iterator> ix{x.begin(), 2};
  
   // iter_swap(ip, ix); // error: not indirectly swappable
  
   }
Output:¶
 1 5
  
   5 1
See also¶
 swap swaps the values of two objects
  
   (function template)
  
   swap_ranges swaps two ranges of elements
  
   (function template)
  
   iter_swap swaps the elements pointed to by two iterators
  
   (function template)
  
   iter_swap swaps the values referenced by two dereferenceable objects
  
   (C++20) (customization point object)
  
   iter_move casts the result of dereferencing the underlying iterator to its
  
   (C++20) associated rvalue reference type
  
   (function)
| 2024.06.10 | http://cppreference.com |