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

📅  最后修改于: 2023-12-03 15:13:56.620000             🧑  作者: Mango

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

简介

在C++的标准模板库(STL)中,priority_queue是一个容器适配器,它提供了一种优先级队列的实现。优先级队列存储一组具有优先级的元素,每次取出的元素都是具有最高优先级的元素。

priority_queue类提供了一系列成员函数和操作符来操作优先级队列,其中之一就是swap()函数。

swap()函数

swap()函数是priority_queue类的一个成员函数,它可以用来交换两个优先级队列的内容。交换后,优先级队列的内容会互换。

void swap(priority_queue& other);

其中,other是另一个优先级队列对象,它与当前优先级队列对象进行交换。

例子

下面是一个使用swap()函数交换两个优先级队列的例子:

#include <iostream>
#include <queue>

int main() {
  std::priority_queue<int> pq1;
  std::priority_queue<int> pq2;
  
  pq1.push(3);
  pq1.push(1);
  pq1.push(4);
  
  pq2.push(2);
  pq2.push(5);
  
  std::cout << "pq1: ";
  while(!pq1.empty()) {
    std::cout << pq1.top() << " ";
    pq1.pop();
  }
  
  std::cout << std::endl;
  
  std::cout << "pq2: ";
  while(!pq2.empty()) {
    std::cout << pq2.top() << " ";
    pq2.pop();
  }
  
  std::cout << std::endl;
  
  // 使用swap函数交换两个优先级队列的内容
  pq1.swap(pq2);
  
  std::cout << "After swapping:" << std::endl;
  
  std::cout << "pq1: ";
  while(!pq1.empty()) {
    std::cout << pq1.top() << " ";
    pq1.pop();
  }
  
  std::cout << std::endl;
  
  std::cout << "pq2: ";
  while(!pq2.empty()) {
    std::cout << pq2.top() << " ";
    pq2.pop();
  }
  
  std::cout << std::endl;
  
  return 0;
}

输出结果:

pq1: 4 3 1
pq2: 5 2
After swapping:
pq1: 5 2
pq2: 4 3 1

可以看到,使用swap()函数后,两个优先级队列的内容发生了交换。

总结

使用C++ STL中priority_queue类的swap()函数可以方便地交换两个优先级队列的内容。它可以在需要改变或重新排序优先级队列元素时提供一种便捷的方法。