Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

array::swap

公众成员函数  <array>
void swap (array& x) noexcept(noexcept(swap(declval<value_type&>(),declval<value_type&>())));

交换内容

通过x的内容交换数组的内容,x是另一个相同类型的数组对象(包括相同的大小)。

在调用这个成员函数之后,这个容器中的元素就是调用之前在x中的元素, 而x中的元素就是原先本数组中的元素。

与其他容器的swap成员函数不同,该成员函数在线性时间内操作, 在单个元素之间执行与其大小相同的单个交换操作(参见swap)。

☲  参数


x
另一个与this容器相同类型(包含相同大小)的数组容器,其内容与this容器的内容交换。.

☉  返回值



none
如果其中一个元素交换调用自身引发异常,则该成员函数可以引发异常。

☣  示例



// 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的非成员特化类型是不抛出的,则函数永远不会抛出异常(no-throw保证)。
否则,容器将保证以有效状态结束(基本保证)。

🍄  另请参阅



swap 交换两个对象的值(函数模板)
swap_ranges 交换两个部分范围内的值(函数模板)

联系我们 免责声明 关于CandCplus 网站地图