Vektoren von Paaren mithilfe des zweiten Elements sortieren
Vektoren von Paaren basierend auf dem zweiten Element sortieren ist eine häufige Programmieraufgabe. In diesem Artikel werden verschiedene Methoden untersucht, um dies mithilfe vorhandener STL-Komponenten und std::less zu erreichen.
Methode 1: Benutzerdefinierter Komparator
Ein benutzerdefinierter Komparator ist ein gängiger Ansatz. Erstellen Sie eine Struktur mit einer überschriebenen Funktion „operator()“, die Paare anhand ihrer zweiten Elemente vergleicht. Zum Beispiel:
struct sort_pred { bool operator()(const std::pair<int, int>& left, const std::pair<int, int>& right) { return left.second < right.second; } };
Dann rufen Sie sort() mit diesem Komparator als drittes Argument auf:
std::sort(vec.begin(), vec.end(), sort_pred());
Methode 2: Lambda-Ausdruck (C 11)
In C 11 können Sie einen Lambda-Ausdruck verwenden, um den Vergleich zu definieren Funktion:
std::sort(vec.begin(), vec.end(), [](const std::pair<int, int>& left, const std::pair<int, int>& right) { return left.second < right.second; });
Methode 3: Generischer vorlagenbasierter Komparator (C 11)
Für wiederverwendbaren Code erstellen Sie einen generischen vorlagenbasierten Komparator:
template <class T1, class T2, class Pred = std::less<T2>> struct sort_pair_second { bool operator()(const std::pair<T1, T2>& left, const std::pair<T1, T2>& right) { Pred p; return p(left.second, right.second); } };
Dann rufen Sie sort() mit dieser vorlagenbasierten Funktion auf Komparator:
std::sort(vec.begin(), vec.end(), sort_pair_second<int, int>());
Empfehlung
Für die Wiederverwendbarkeit ist der generische vorlagenbasierte Komparator eine leistungsstarke Option. Der Einfachheit halber reicht es jedoch oft aus, einen benutzerdefinierten Komparator oder Lambda-Ausdruck zu schreiben.
Das obige ist der detaillierte Inhalt vonWie kann ich einen Vektor von Paaren basierend auf dem zweiten Element in C sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!