C++中priority_queueclass中的swap()函数有什么用?

What is the use of swap() function in priority_queue class in C++?

我在 C++ 中探索 priority_queue class,但想不出 swap() 的任何实际用途。

参考:http://www.cplusplus.com/reference/queue/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::cout << "size of bar: " << bar.size() << '\n';

swap 是图书馆范围内的功能;标准库中的许多 类 支持交换。这也是一个定制点;您可以将 std::swap 专门化为您自己的 类。

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

A swapnoexcept 是编写异常安全代码的好工具。