(堆)priority_queue

来源:互联网 发布:单片机是什么 编辑:程序博客网 时间:2024/05/21 22:48

注意结合queue的用法记忆

top()(注意这个在queue中没有,和queue中的front()一样)

// priority_queue::top#include <iostream>       // std::cout#include <queue>          // std::priority_queueint main (){  std::priority_queue<int> mypq;  mypq.push(10);  mypq.push(20);  mypq.push(15);  std::cout << "mypq.top() is now " << mypq.top() << '\n';  return 0;}

Output:

mypq.top() is now 20

 

 

swap()

// priority_queue::swap#include <iostream>       // std::cout#include <queue>          // std::priority_queueint main (){  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';  return 0;}

Output:

size of foo: 2size of bar: 3


 

 

 

size()

// priority_queue::size#include <iostream>       // std::cout#include <queue>          // std::priority_queueint main (){  std::priority_queue<int> myints;  std::cout << "0. size: " << myints.size() << '\n';  for (int i=0; i<5; i++) myints.push(i);  std::cout << "1. size: " << myints.size() << '\n';  myints.pop();  std::cout << "2. size: " << myints.size() << '\n';  return 0;}


 

Output
0. size: 0

1. size: 5

2. size: 4

 

push()

// priority_queue::push/pop#include <iostream>       // std::cout#include <queue>          // std::priority_queueint main (){  std::priority_queue<int> mypq;  mypq.push(30);  mypq.push(100);  mypq.push(25);  mypq.push(40);  std::cout << "Popping out elements...";  while (!mypq.empty())  {     std::cout << ' ' << mypq.top();     mypq.pop();  }  std::cout << '\n';  return 0;}

Output     Popping out elements... 100 40 30 25


 

pop()

// priority_queue::push/pop#include <iostream>       // std::cout#include <queue>          // std::priority_queueint main (){  std::priority_queue<int> mypq;  mypq.push(30);  mypq.push(100);  mypq.push(25);  mypq.push(40);  std::cout << "Popping out elements...";  while (!mypq.empty())  {     std::cout << ' ' << mypq.top();     mypq.pop();  }  std::cout << '\n';  return 0;}


Output   Popping out elements... 100 40 30 25


 

empty()

/ priority_queue::empty#include <iostream>       // std::cout#include <queue>          // std::priority_queueint main (){  std::priority_queue<int> mypq;  int sum (0);  for (int i=1;i<=10;i++) mypq.push(i);  while (!mypq.empty())  {     sum += mypq.top();     mypq.pop();  }  std::cout << "total: " << sum << '\n';  return 0;}

Output    total: 55


emplace()(不常用)

// priority_queue::emplace#include <iostream>       // std::cout#include <queue>          // std::priority_queue#include <string>         // std::stringint main (){  std::priority_queue<std::string> mypq;  mypq.emplace("orange");  mypq.emplace("strawberry");  mypq.emplace("apple");  mypq.emplace("pear");  std::cout << "mypq contains:";  while (!mypq.empty())  {     std::cout << ' ' << mypq.top();     mypq.pop();  }  std::cout << '\n';  return 0;}  Edit & Run 


Output        mypq contains: strawberry pear orange apple

 

0 0