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:
1 2 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
1 2 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] 50
// 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
)