Heim > Backend-Entwicklung > C++ > Wie sortiere ich mehrere Vektoren basierend auf den Werten eines einzelnen Vektors?

Wie sortiere ich mehrere Vektoren basierend auf den Werten eines einzelnen Vektors?

Susan Sarandon
Freigeben: 2024-12-29 20:04:14
Original
681 Leute haben es durchsucht

How to Sort Multiple Vectors Based on the Values of a Single Vector?

Sortieren von Vektoren basierend auf Werten aus einem anderen Vektor

Stellen Sie sich ein Szenario vor, in dem Sie mehrere Vektoren derselben Länge haben und dies möchten Sortieren Sie einen Vektor nach einer bestimmten Reihenfolge, während Sie dieselbe Permutation auf die anderen Vektoren anwenden. Dies stellt die Herausforderung dar, dieses Sortiermuster über mehrere Vektoren hinweg zu nutzen.

Lösung

Um einen Vektor nach Werten aus einem anderen Vektor zu sortieren, können Sie eine benutzerdefinierte Methode verwenden Sortierer und verwenden Sie einen Vektor, der den Index jedes Elements mit seinem entsprechenden Wert im Sortiervektor koppelt.

typedef vector<int>::const_iterator myiter;

vector<pair<size_t, myiter>> order(Index.size());

size_t n = 0;
for (myiter it = Index.begin(); it != Index.end(); ++it, ++n)
    order[n] = make_pair(n, it);

struct ordering {
    bool operator ()(pair<size_t, myiter> const& a, pair<size_t, myiter> const& b) {
        return *(a.second) < *(b.second);
    }
};

sort(order.begin(), order.end(), ordering());
Nach dem Login kopieren

Sobald Sie die Sortierung haben Bei der Sortierung können Sie dies als Nachschlagetabelle für den neuen Index jedes Elements in den anderen Vektoren verwenden.

template <typename T>
vector<T> sort_from_ref(
    vector<T> const& in,
    vector<pair<size_t, myiter>> const& reference
) {
    vector<T> ret(in.size());

    size_t const size = in.size();
    for (size_t i = 0; i < size; ++i)
        ret[i] = in[reference[i].first];

    return ret;
}
Nach dem Login kopieren

Durch die Anwendung dieses Prozesses können Sie den Zielvektor effektiv sortieren und dieselbe Transformation auf den anwenden entsprechende Elemente in den anderen Vektoren.

Das obige ist der detaillierte Inhalt vonWie sortiere ich mehrere Vektoren basierend auf den Werten eines einzelnen Vektors?. 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