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