公共成员函数
<forward_list>

std::forward_list::swap

void swap (forward_list& fwdlst);
交换内容
将本容器的内容与另一个同类型的 forward_list 对象 fwdlst 的内容进行交换。它们的大小可能不同。

调用此成员函数后,本容器中的元素将是调用前 fwdlst 中的元素,而 fwdlst 中的元素将是调用前容器中的元素。所有迭代器、引用和指针对于交换后的对象仍然有效。

请注意,存在一个同名的非成员函数 swap,它通过优化来重载该算法,其行为类似于此成员函数。

容器 allocators 是否也被交换是未定义的,除非在合适 allocator trait 明确指示它们应该 propagate 的情况下。

参数

fwdlst
与本容器同类型的另一个 forward_list 容器(即具有相同的模板参数,TAlloc)其内容与此容器的内容交换。

返回值



示例

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

int main ()
{
  std::forward_list<int> first = {10, 20, 30};
  std::forward_list<int> second = {100, 200};
  std::forward_list<int>::iterator it;

  first.swap(second);

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

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

  return 0;
}

输出
first contains: 100 200
second contains: 10 20 30


复杂度

常量。

迭代器有效性

指向两个容器中元素的的所有迭代器、指针和引用仍然有效,但现在指向另一个容器中的元素,并在其中迭代。
请注意,结束迭代器(包括 before_begin)不指向任何元素,并且可能失效。

数据竞争

容器和 fwdlst 都被修改。
调用不会访问任何包含的元素(尽管请参见上面的迭代器有效性)。

异常安全

如果两个容器中的分配器进行比较相等,或者它们的 分配器特性 表明分配器应该 传播,则该函数永远不会抛出异常(无异常保证)。
否则,将导致未定义行为

另见