function template
<algorithm>

std::iter_swap

template <class ForwardIterator1, class ForwardIterator2>  void iter_swap (ForwardIterator1 a, ForwardIterator2 b);
交换由两个迭代器指向的对象的元素
交换由 ab 指向的元素。

该函数调用 swap (未限定) 来交换元素。

此函数模板的行为等同于
1
2
3
4
5
template <class ForwardIterator1, class ForwardIterator2>
  void iter_swap (ForwardIterator1 a, ForwardIterator2 b)
{
  swap (*a, *b);
}

参数

a, b
指向要交换对象的 Forward iterators
swap 应定义为交换由迭代器指向的类型的值。

返回值



示例

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;
}

输出
myvector contains: 10 99 40 99


复杂度

常量:调用一次 swap

数据竞争

两个迭代器指向的对象都将被修改。

异常

如果对 swap 的调用抛出异常,则抛出异常。
请注意,无效参数会导致未定义行为

另见