📜  C++ STL-priority_queue.swap()函数(1)

📅  最后修改于: 2023-12-03 14:39:51.495000             🧑  作者: Mango

C++ STL 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
解释

在上述示例中,我们创建了两个优先队列 pq1pq2,并向它们分别插入一些元素。然后,我们使用 pq1.swap(pq2) 函数来交换这两个优先队列的内容。最后,我们输出交换后的优先队列内容,可以看到它们已经互换了。

总结

priority_queue.swap() 函数非常方便地允许我们交换两个优先队列的内容,而无需手动复制元素。这在某些特定的情况下可以提高代码的效率。注意,交换操作只是交换两个优先队列的元素,而不会交换它们的比较函数或其他属性。