#include <queue>
#include <functional>

using namespace std;

int main() {
	{ // top = max
		priority_queue<int> q;
		q.push(1);
	}
	{ // top = min
		priority_queue<int, vector<int>, greater<int>> q;
		q.push(1);
	}
	{ // top = min
		struct my_comp {
			bool operator () ( int i, int j ) {
				return i > j;
			}
		};
		priority_queue<int, vector<int>, my_comp> q;
		q.push(1);
	}
	{ // top = min
		auto f = [&]( int i, int j ) {
			return i > j;
		};
		priority_queue<int, vector<int>, function<bool(int, int)>> q1(f); // руками задаём тип компаратора
		priority_queue<int, vector<int>, decltype(f)> q2(f); // выводим тип компаратора автоматически
		q1.push(1);
		q2.push(2);
	}
}