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 的呼叫丟擲異常,則丟擲異常。
請注意,無效引數會導致未定義行為

另見