📅  最后修改于: 2023-12-03 14:39:51.495000             🧑  作者: Mango
priority_queue.swap()
函数priority_queue.swap()
函数是 C++ STL (标准模板库)中的一个成员函数,用于交换两个优先队列的内容。优先队列是一种特殊的容器,其元素按特定顺序排列,并且在插入新元素或删除头部元素时都会自动维护这个顺序。交换两个优先队列可以快速而有效地交换它们的内容,而不会复制其中的元素。
下面是 priority_queue.swap()
函数的语法:
void swap(priority_queue& other);
other
:要与当前优先队列交换内容的另一个优先队列。#include <iostream>
#include <queue>
int main() {
std::priority_queue<int> pq1;
std::priority_queue<int> pq2;
// 向 pq1 中插入一些元素
pq1.push(10);
pq1.push(30);
pq1.push(20);
// 向 pq2 中插入一些元素
pq2.push(40);
pq2.push(50);
pq2.push(60);
// 输出交换前的优先队列内容
std::cout << "优先队列1:" << std::endl;
while (!pq1.empty()) {
std::cout << pq1.top() << " ";
pq1.pop();
}
std::cout << std::endl;
std::cout << "优先队列2:" << std::endl;
while (!pq2.empty()) {
std::cout << pq2.top() << " ";
pq2.pop();
}
std::cout << std::endl;
// 交换两个优先队列的内容
pq1.swap(pq2);
// 输出交换后的优先队列内容
std::cout << "交换后的优先队列1:" << std::endl;
while (!pq1.empty()) {
std::cout << pq1.top() << " ";
pq1.pop();
}
std::cout << std::endl;
std::cout << "交换后的优先队列2:" << std::endl;
while (!pq2.empty()) {
std::cout << pq2.top() << " ";
pq2.pop();
}
std::cout << std::endl;
return 0;
}
优先队列1:
30 20 10
优先队列2:
60 50 40
交换后的优先队列1:
60 50 40
交换后的优先队列2:
30 20 10
在上述示例中,我们创建了两个优先队列 pq1
和 pq2
,并向它们分别插入一些元素。然后,我们使用 pq1.swap(pq2)
函数来交换这两个优先队列的内容。最后,我们输出交换后的优先队列内容,可以看到它们已经互换了。
priority_queue.swap()
函数非常方便地允许我们交换两个优先队列的内容,而无需手动复制元素。这在某些特定的情况下可以提高代码的效率。注意,交换操作只是交换两个优先队列的元素,而不会交换它们的比较函数或其他属性。