* create
```
#include <queue>
#include <array>
using namespace std;
struct classComp {
bool operator() (int l, int r) { return l<r; }
};
bool funComp(int l, int r) { return l<r; }
int main () {
array<int,5> v{1,2,3,4,5};
priority_queue<int> a; // default constructor
priority_queue<int> b(a); // copy constructor
priority_queue<int> c(move(a)); // move constructor
//priority_queue<int> d{1,2,3,4,5}; // priority_queue has no initializer list constructor
priority_queue<int> e(3,1);
//priority_queue<int> f(a.begin(),a.end()); // range constructor
priority_queue<int>* g = new priority_queue<int>(); // new operator
delete g;
priority_queue<int,vector<int>,classComp> cc;
priority_queue<int,vector<int>,decltype(&funComp)> cf(&funComp);
}
```
* iterator (N/A)
* add
```
#include <iostream>
#include <queue>
using namespace std;
int main ()
{
priority_queue<int> s;
s.push(1);
s.emplace(3);
while(!s.empty()) {
cout<<s.top()<<",";
s.pop();
}
cout<<endl;
}
// 3,1,
```
* change (N/A)
* query
```
#include <queue>
#include <vector>
#include <iostream>
using namespace std;
int main() {
auto compare = [](int a, int b) { return a>b; };
priority_queue<int, vector<int>, decltype(compare)> s(compare);
s.push(2);
s.push(1);
cout<<s.top()<<endl;
cout<<s.empty()<<","<<s.size()<<endl;
}
```
* delete
```
#include <queue>
#include <iostream>
using namespace std;
int main() {
priority_queue<int> s;
s.push(2);
s.pop();
cout<<s.empty()<<","<<s.size()<<endl;
}
```