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 |
交换两个部分范围内的值(函数模板) |