Heim > Backend-Entwicklung > C++ > Wie kann man einen Vektor von Paaren effizient nach dem zweiten Element sortieren?

Wie kann man einen Vektor von Paaren effizient nach dem zweiten Element sortieren?

Linda Hamilton
Freigeben: 2024-12-09 13:47:24
Original
974 Leute haben es durchsucht

How to Efficiently Sort a Vector of Pairs by the Second Element?

So sortieren Sie einen Vektor von Paaren effizient nach dem zweiten Element des Paares

Dieser Artikel befasst sich mit der Frage der Sortierung eines Vektors von Paaren basierend auf dem zweites Element jedes Paares in aufsteigender Reihenfolge. Während das Erstellen eines benutzerdefinierten Funktionsobjekts für diese Aufgabe eine praktikable Lösung ist, gibt es alternative Methoden, die vorhandene STL-Komponenten und std::less nutzen.

Verwendung von std::sort mit einem benutzerdefinierten Komparator

Ein Ansatz besteht darin, einen benutzerdefinierten Komparator als optionales drittes Argument für std::sort zu verwenden. Dieser benutzerdefinierte Komparator namens sort_pred ist wie folgt definiert:

struct sort_pred {
    bool operator()(const std::pair<int,int> &amp;left, const std::pair<int,int> &amp;right) {
        return left.second < right.second;
    }
};
Nach dem Login kopieren

Um diesen Komparator zu verwenden, übergeben Sie ihn einfach an std::sort:

std::sort(v.begin(), v.end(), sort_pred());
Nach dem Login kopieren

Verwenden Sie C 11 Lambdas

Wenn Sie einen C 11-Compiler verwenden, können Sie Lambdas anstelle eines benutzerdefinierten verwenden Vergleicher:

std::sort(v.begin(), v.end(), [](const std::pair<int,int> &amp;left, const std::pair<int,int> &amp;right) {
    return left.second < right.second;
});
Nach dem Login kopieren

Verwenden einer generischen Vorlage für die Paarsortierung

Für mehr Flexibilität und Wiederverwendbarkeit können Sie eine generische Vorlage namens sort_pair_second:

<🎜 erstellen >
template <class T1, class T2, class Pred = std::less<T2> >
struct sort_pair_second {
    bool operator()(const std::pair<T1,T2>&amp;left, const std::pair<T1,T2>&amp;right) {
        Pred p;
        return p(left.second, right.second);
    }
};
Nach dem Login kopieren
Mit dieser Vorlage erreichen Sie die gewünschte Sortierung wie folgt:

Das obige ist der detaillierte Inhalt vonWie kann man einen Vektor von Paaren effizient nach dem zweiten Element sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage