function template
<algorithm>
std::iter_swap
template <class ForwardIterator1, class ForwardIterator2>
  void iter_swap (ForwardIterator1 a, ForwardIterator2 b);
Exchange values of objects pointed by two iterators
Swaps the elements pointed by a and b.
The function calls swap (unqualified) to exchange the elements.
The behavior of this function template is equivalent to:
| 12
 3
 4
 5
 
 | template <class ForwardIterator1, class ForwardIterator2>
  void iter_swap (ForwardIterator1 a, ForwardIterator2 b)
{
  swap (*a, *b);
}
 | 
Parameters
- a, b
- Forward iterators to the objects to swap.
 swap shall be defined to exchange values of the type pointed by the iterators.
 
Example
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 
 | // iter_swap example
#include <iostream>     // std::cout
#include <algorithm>    // std::iter_swap
#include <vector>       // std::vector
int main () {
  int myints[]={10,20,30,40,50 };              //   myints:  10  20  30  40  50
  std::vector<int> myvector (4,99);            // myvector:  99  99  99  99
  std::iter_swap(myints,myvector.begin());     //   myints: [99] 20  30  40  50
                                               // myvector: [10] 99  99  99
  std::iter_swap(myints+3,myvector.begin()+2); //   myints:  99  20  30 [99]
                                               // myvector:  10  99 [40] 99
  std::cout << "myvector contains:";
  for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';
  return 0;
}
 | 
Output:
| myvector contains: 10 99 40 99
 | 
Complexity
Constant: Calls swap once.
Data races
The objects pointed by both iterators are modified.
Exceptions
Throws if the call to swap throws.
Note that invalid arguments cause undefined behavior.
See also
- swap
- Exchange values of two objects (function template
)
- copy
- Copy range of elements (function template
)
- replace
- Replace value in range (function template
)