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 对象最终都处于有效状态(基本保证)。

另见