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

另见