方式一,自定义仿函数:
using PII = pair<int,int>;
struct CMP
{
bool operator () (const PII& a, const PII& b)
{
return a.second < b.second;
}
};
priority_queue<PII, vector<PII> ,CMP> Q;
方式二:
using PII = pair<int,int>;
bool CMP2(const PII& a, const PII& b)
{
return a.second < b.second;
}
priority_queue<PII, vector<PII>, decltype(&CMP2) > Q(CMP2);
参考链接:力扣
方式三,通过lambda表达式
auto cmp = [&](const PII& a, const PII& b )
{
return matrix[a.first][a.second] > matrix[b.first][b.second];
};
priority_queue<PII, vector<PII>, decltype(cmp)> heap(cmp);
参考链接:力扣