C++ STL中的priority_queue::swap()

C++ STL中的priority_queue::swap()

优先队列是一种容器适配器,特别设计使队列中的第一个元素是队列中所有元素中最大或最小的。然而,在C++ STL中(默认情况下)最大的元素位于顶部。我们也可以通过在创建优先队列时简单地传递额外的参数来创建顶部为最小元素的优先队列。

priority_queue::swap()

此函数用于将一个具有相同类型和相同或不同大小的另一个优先队列的内容与另一个优先队列的内容交换。

时间复杂度:O(1)

语法:

priorityqueuename1.swap(priorityqueuename2)
参数:
要与其中的内容交换的优先队列的名称。
结果:
两个优先队列的所有元素都被交换。

例子:

输入:mypqueue1 = {1, 2, 3, 4}
         mypqueue2 = {3, 5, 7, 9}
         mypqueue1.swap(mypqueue2);
输出:mypqueue1 = {9, 7, 5, 3}
         mypqueue2 = {4, 3, 2, 1}

输入:mypqueue1 = {1, 3, 5, 7}
         mypqueue2 = {2, 4, 6, 8}
         mypqueue1.swap(mypqueue2);
输出:mypqueue1 = {8, 6, 4, 2}
         mypqueue2 = {7, 5, 3, 1}

注意: 在优先队列容器中,元素以相反的顺序打印,因为首先打印顶部,然后移动到其他元素。

错误和异常 1. 如果优先队列不是相同类型,则会抛出错误。2. 否则,它具有基本的非异常引发保证。

例子1:它交换了相同类型和相同大小的两个优先队列

// CPP程序,演示
// swap()函数的实现
#include <iostream>
#include <queue>
using namespace std;
 
int main()
{
    // priority_queue容器声明
    priority_queue<int> mypqueue1;
    priority_queue<int> mypqueue2;
 
    //将元素推入第一个优先队列中
    mypqueue1.push(1);
    mypqueue1.push(2);
    mypqueue1.push(3);
    mypqueue1.push(4);
 
    //将元素推入第二个优先队列中
    mypqueue2.push(3);
    mypqueue2.push(5);
    mypqueue2.push(7);
    mypqueue2.push(9);
 
    //使用swap()函数交换优先队列的元素
    mypqueue1.swap(mypqueue2);
 
    //打印第一个优先队列
    cout << "mypqueue1 = ";
    while (!mypqueue1.empty()) {
        cout << mypqueue1.top() << " ";
        mypqueue1.pop();
    }
 
    //打印第二个优先队列
    cout << endl
        << "mypqueue2 = ";
    while (!mypqueue2.empty()) {
        cout << mypqueue2.top() << " ";
        mypqueue2.pop();
    }
    return 0;
}  

输出

mypqueue1 = 9 7 5 3 
mypqueue2 = 4 3 2 1 

例子2: 它交换了相同类型但大小不同的两个优先队列

// CPP程序,演示swap()函数的实现本文
//针对不同的大小
 
#include<bits/stdc++.h>
using namespace std;
 
int main()
{
    //优先级队列容器声明
    priority_queue<int> mypqueue1;
    priority_queue<int> mypqueue2;
 
    //将元素推入第一个优先级队列
    mypqueue1.push(1);
    mypqueue1.push(2);
    mypqueue1.push(3);
    mypqueue1.push(4);
    mypqueue1.push(5);
   
    //将元素推入第二个优先级队列
    mypqueue2.push(3);
    mypqueue2.push(5);
    mypqueue2.push(7);
    mypqueue2.push(9);
 
    //使用swap()函数交换优先级队列的元素
    mypqueue1.swap(mypqueue2);
 
    //打印第一个优先级队列
      cout<<"mypqueue1 = ";
    while (!mypqueue1.empty()) {
        cout<<mypqueue1.top() << " ";
        mypqueue1.pop();
    }
 
    //打印第二个优先级队列
      cout<<endl<<"mypqueue2 = ";
    while (!mypqueue2.empty()) {
        cout<<mypqueue2.top() << " ";
        mypqueue2.pop();
    }
    return 0;
} 

输出

mypqueue1=9 7 5 3
mypqueue2=5 4 3 2 1

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程