std::
list::swap
公众成员函数 <list>
交换容器
用x的内容交换容器的内容,x是另一个相同类型的列表。大小可能不同。
在调用这个成员函数之后,这个容器中的元素是调用之前在x中的元素,
而x中的元素是在这个容器中的元素。对于交换的对象,所有迭代器、引用和指针都是有效的。
请注意,存在一个名称相同的非成员函数,swap,重载该算法,其优化行为与此成员函数类似。
容器分配器是否也被交换没有定义,除非在相应的分配器特征显式指示它们应该传递的情况下。
☲ 参数
-
x
-
另一个与this类型相同的列表容器(例如,具有相同的模板参数,T和Alloc),
其内容与该容器的内容交换。
☉ 返回值
none
☣ 示例
// swap lists
#include <iostream>
#include <list>
int main ()
{
std::list<int> first (3,100); // three ints with a value of 100
std::list<int> second (5,200); // five ints with a value of 200
first.swap(second);
std::cout << "first contains:";
for (std::list<int>::iterator it=first.begin(); it!=first.end(); it++)
std::cout << ' ' << *it;
std::cout << '\n';
std::cout << "second contains:";
for (std::list<int>::iterator it=second.begin(); it!=second.end(); it++)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
} |
输出:
first contains: 200 200 200 200 200
second contains: 100 100 100
✥ 复杂度
常量
☣ 迭代器的有效性
所有指向两个容器中元素的迭代器、指针和引用仍然有效,但现在它们指向另一个容器中的元素,并在其中迭代.
注意,结束迭代器不指向元素,可能会失效。
⇄ 数据竞争
容器和x都被修改。
调用不会访问包含的元素(请参阅上面的迭代器有效性)。
☂ 异常安全性
如果两个容器中的分配器比较相等,或者它们的分配器特征表明分配器应该传递,
则函数永远不会抛出异常(无抛出保证)。
否则,它会导致未定义的行为。
🍄 另请参阅
swap (list) |
交换两个列表的内容(函数模板) |
swap_ranges |
交换两个范围的值(函数模板) |