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, int>>
pqpair.cpp:18: error: conversion from ‘<unresolved overloaded function type>’
to non-scalar type ‘std::pair<int, std::pair<int, int> >’ requested
私はcplusplus.comフォーラム
プログラムでは、 'PairComparator'を比較器としてpriority_queueに渡していません。 'std :: less>'が何をするのでしょうか?私たちはそれを使う必要がありますか?感謝! –
rajatkhanduja