function template
<utility>

std::swap (pair)

template <class T1, class T2>  void swap (pair<T1,T2>& x, pair<T1,T2>& y) noexcept (noexcept(x.swap(y)));
交換兩個 pair 的內容
容器 x 的內容與 y 的內容進行交換。兩個容器物件應為同一型別(相同的模板引數)。

這是泛型 swap 的過載,它透過呼叫 pair::swap 來提高效能,例如: x.swap(y)

引數

x,y
相同型別的 pair 物件(即,具有相同的模板引數 T1T2)。

返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// swap (pair overload)
#include <utility>      // std::pair
#include <iostream>     // std::cout

int main () {
  std::pair<int,char> foo (10,'a');
  std::pair<int,char> bar (90,'z');

  swap (foo,bar);

  std::cout << "foo contains: " << foo.first;
  std::cout << " and " << foo.second << '\n';

  return 0;
}

輸出
foo contains: 90 and z


資料競爭

修改兩個 pair 物件 xy 的成員。

異常安全

如果 T1T2 都定義了 swap 函式,並且此函式是 noexcept,則此函式永遠不會丟擲異常(無丟擲保證)。
否則,如果至少其中一個使用移動語義進行交換,則在發生異常時,該操作可能會使一個或兩個 pair 物件處於無效狀態(無保證)。
否則,該操作保證在發生異常時,xy 都將最終處於有效狀態(基本保證)。

另見