public member function
<array>

std::array::swap

void swap (array& x) noexcept(noexcept(swap(declval<value_type&>(),declval<value_type&>())));
交换内容
将数组的内容与另一个相同类型(包括相同大小)的 array 对象 x 的内容进行交换。

调用此成员函数后,此容器中的元素将是调用前 x 中的元素,而 x 中的元素将是调用前this.

与其它容器的swap成员函数不同,此成员函数通过执行与数组大小相等的多次单独元素交换操作(参见 swap)来在 O(N) 时间内完成。

参数

x
另一个 array 容器,其类型(包括大小)与此容器相同,其内容将与此容器的内容交换。

返回值

无。

如果元素对的交换调用本身抛出异常,此成员函数可能会抛出异常。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// swap arrays
#include <iostream>
#include <array>

int main ()
{
  std::array<int,5> first = {10, 20, 30, 40, 50};
  std::array<int,5> second = {11, 22, 33, 44, 55};

  first.swap (second);

  std::cout << "first:";
  for (int& x : first) std::cout << ' ' << x;
  std::cout << '\n';

  std::cout << "second:";
  for (int& x : second) std::cout << ' ' << x;
  std::cout << '\n';

  return 0;
}

输出
first: 11 22 33 44 55
second: 10 20 30 40 50


复杂度

线性:执行与数组大小相等的多次单独交换操作。

迭代器有效性

所有迭代器、引用和指针的有效性均不改变:它们仍然与调用前所关联的相同容器的相同位置相关联,但它们仍然指向的元素将具有交换后的值。

数据竞争

容器和 x 都被修改。
调用会访问两个容器中的所有元素。

异常安全

如果元素类型的非成员特化的 swap 不会抛出异常,则该函数永远不会抛出异常(无异常保证)。
否则,该容器保证处于有效状态(基本保证)。

另见