public member function
<utility>

std::pair::swap

void swap (pair& pr) noexcept ( noexcept(swap(first,pr.first)) &&                                noexcept(swap(second,pr.second)) );
交換內容
pair 物件的內容與 pr 的內容交換。

該函式呼叫 swap (未限定) 來交換元素。

它的定義與以下行為相同:
1
2
3
4
5
void swap (pair& pr) noexcept ( noexcept(swap(first,pr.first)) &&
                                noexcept(swap(second,pr.second)) ) {
  swap(first,pr.first);
  swap(second,pr.second);
}

引數

pr
另一個相同型別的 pair 物件 (即,具有相同的類模板引數 T1T2)。

返回值



示例

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

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

  foo.swap(bar);

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

  return 0;
}

輸出
foo contains: 90 and z


資料競爭

兩個 pair 物件的成員都會被修改。

異常安全

如果 firstsecond 的型別都定義了 swap 函式,並且該函式是 noexcept,則此成員函式永遠不會丟擲異常(無丟擲保證)。
否則,如果至少其中一個以移動語義交換,則在發生異常的情況下,操作可能會使其中一個或兩個 pair 物件處於無效狀態(無保證)。
否則,該操作保證在發生異常的情況下,所涉及的兩個 pair 物件最終都處於有效狀態(基本保證)。

另見