Heim > Backend-Entwicklung > C++ > Wie kann ich einen Vektor von Paaren basierend auf dem zweiten Element in C sortieren?

Wie kann ich einen Vektor von Paaren basierend auf dem zweiten Element in C sortieren?

Mary-Kate Olsen
Freigeben: 2024-12-10 22:35:11
Original
655 Leute haben es durchsucht

How Can I Sort a Vector of Pairs Based on the Second Element in C  ?

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;
    }
};
Nach dem Login kopieren

Dann rufen Sie sort() mit diesem Komparator als drittes Argument auf:

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

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;
});
Nach dem Login kopieren

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);
    }
};
Nach dem Login kopieren

Dann rufen Sie sort() mit dieser vorlagenbasierten Funktion auf Komparator:

std::sort(vec.begin(), vec.end(), sort_pair_second<int, int>());
Nach dem Login kopieren

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!

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