C++11 swap()函数在C++;? 我在C++中探索PrimyItQueLead类,并且不能考虑SWAP()的任何实际使用。p>

C++11 swap()函数在C++;? 我在C++中探索PrimyItQueLead类,并且不能考虑SWAP()的任何实际使用。p>,c++11,data-structures,stl,priority-queue,swap,C++11,Data Structures,Stl,Priority Queue,Swap,参考: 有人能列举一个使用此功能有益的实例吗。本质上,这就像重命名优先级队列变量 std::priority_queue<int> foo,bar; foo.push (15); foo.push(30); foo.push(10); bar.push (101); bar.push(202); foo.swap(bar); std::cout << "size of foo: " << foo.size() << '\n'; std::cou

参考:

有人能列举一个使用此功能有益的实例吗。本质上,这就像重命名优先级队列变量

std::priority_queue<int> foo,bar;
foo.push (15); foo.push(30); foo.push(10);
bar.push (101); bar.push(202);

foo.swap(bar);

std::cout << "size of foo: " << foo.size() << '\n';
std::cout << "size of bar: " << bar.size() << '\n';
std::priority\u队列foo,bar;
foo.push(15);foo.push(30);foo.push(10);
推力器(101);推力器(202);
foo.swap(bar);

std::cout
swap
是一个库范围的特性;标准库中的许多类都支持交换。它也是一个定制点;您可以为自己的类专门化
std::swap

至于它的用途——有很多算法使用它(例如,所有排序算法),一些容器在内部使用它


swap
noexcept
是编写异常安全代码的好工具。

可能具有历史意义<代码>交换
是这个可怜的人在C++11之前的
move
。所有容器都有它,它不是
priority\u queue
所独有的。当时,您会将一个元素“移动”到如下向量中:
std::vector v;v、 向后推(std::priority_queue());v、 back().swap(myQueue)“复制和交换”是实现复制分配的一个众所周知的习惯用法。出于这个原因(以及其他原因),能够有效地交换对象是很有用的。如果您有一个类,其中包含一个优先级队列作为成员,那么您的类可以是一个向量元素,您的类可能有一个交换成员函数(由std::sort使用)。该swap成员函数可以在实现中调用优先级队列swap。