2
#include <iostream>
#include <queue>
using namespace std;
template< typename FirstType, typename SecondType >
struct PairComparator {
bool operator()(const pair<FirstType, SecondType>& p1, const pair<FirstType, SecondType>& p2) const
{ if(p1.first < p2.first) return true;
if(p2.first < p1.first) return false;
//return p1.second < p2.second;
}
};
priority_queue<pair<int, pair<int, int> > > q;
int main() {
q.push(make_pair(1, make_pair(2,3)));
pair<int, pair<int, int> > a = q.top;
return 0;
}
這給我的錯誤定製比較器用於對優先隊列<整型,對<int, int>>
pqpair.cpp:18: error: conversion from ‘<unresolved overloaded function type>’
to non-scalar type ‘std::pair<int, std::pair<int, int> >’ requested
我發現PairComparator
代碼從cplusplus.com論壇
在程序中,您沒有將'PairComparator'作爲比較器傳遞給priority_queue。是不是正在做'std :: less'會做什麼?我們甚至需要使用它嗎? –
rajatkhanduja