Ich bin immer verwirrt, wenn ich den Komparator für einen Container für die Prioritätswarteschlange definiere und weiß nicht, wie ich ihn verstehen soll. Zum Beispiel habe ich eine vector
von pair<int,int>
, wo ich die Paare absteigend durch seinen zweiten Feldwert sortieren möchte.So verstehen Sie den Operator "größer als/kleiner als" im Komparator des C++ - Queue-Containers intuitiv
So sieht die Codes wie folgt aus:
struct Compare
{
bool operator()(pair<int,int> const &p1, pair<int,int> const &p2) const
{
return p1.second < p2.second;
}
};
priority_queue<pair<int,int>,vector<pair<int,int> >, Compare> pqueue;
Wie die Betreiber verstehen "<"
hier, weil ich dachte, es ">"
das erste Mal sein sollte, und es musste auf Basis ändern auf das Ergebnis. Warum ist es "<"
für absteigende Reihenfolge anstelle von ">"
? Ich will es beim nächsten Mal einfach bei der ersten Aufnahme richtig machen, wenn ich priority_queue
benutze. Vielen Dank.