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

std::

forward_list::swap

公众成员函数  <forward_list>
void swap (forward_list& fwdlst);

交换内容

通过fwdlst的内容交换容器的内容,它是另一个相同类型的forward_list对象。大小可能不同。

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

注意,存在一个同名的非成员函数,swap,重载该算法,并使用与此成员函数类似的优化行为。

没有定义容器分配器是否也交换,除非相应的分配器特征显式地表明它们应该传递。

☲  参数


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

☉  返回值



none

☣  示例



// 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

✥ 复杂度



常量

☣ 迭代器的有效性



所有指向这两个容器中元素的迭代器、指针和引用仍然有效, 但现在都指向另一个容器中的元素,并在其中进行迭代。
注意,end迭代器(包括before_begin)不指向元素,可能会失效。

⇄ 数据竞争


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

☂ 异常安全性



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

🍄  另请参阅



swap(forward_list) 交换两个forward_list容器的内容(函数模板)
swap_ranges 交换两个范围的值 (函数模板)

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