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 不會丟擲異常,則該函式永遠不會丟擲異常(無異常保證)。
否則,該容器保證處於有效狀態(基本保證)。

另見