Heim > Backend-Entwicklung > C++ > Wie sortiere ich einen Vektor anhand der Werte eines anderen Vektors?

Wie sortiere ich einen Vektor anhand der Werte eines anderen Vektors?

Barbara Streisand
Freigeben: 2024-12-29 04:14:12
Original
818 Leute haben es durchsucht

How to Sort One Vector Based on the Values of Another Vector?

Sortieren eines Vektors nach Werten eines anderen Vektors

Stellen Sie sich das Szenario vor, in dem Sie mehrere Vektoren gleicher Länge haben und einen Vektor sortieren möchten basierend auf den Werten eines anderen Vektors. Beispielsweise können Sie einen Vektor Index aus Ganzzahlen und einen Vektor Werte aus Zeichenfolgen haben. Durch das Sortieren des Vektors Index sollten anschließend die Elemente im Vektor Werte entsprechend neu angeordnet werden.

Ein effektiver Ansatz besteht darin, einen Vektor zu erstellen, der die Elemente aus dem Vektor paart Index Vektor mit den entsprechenden Indizes. Dieser Vektor, order, kann dann mithilfe einer benutzerdefinierten Sortierfunktion sortiert werden, die die Elemente aus dem Index-Vektor vergleicht. Der sortierte Reihenfolge-Vektor erfasst die gewünschte Sortierreihenfolge.

Mit dieser Sortierreihenfolge können Sie die anderen Vektoren neu anordnen. Betrachten Sie den folgenden Codeausschnitt:

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);

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

Die Funktion ordering sortiert den Vektor order basierend auf den Werten aus dem Vektor Index. Sie können dann den Vektor Order verwenden, um den Vektor Werte mithilfe des folgenden Codes neu zu ordnen:

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

Mit diesem Ansatz können Sie einen Vektor nach den Werten sortieren einen anderen Vektor und wenden Sie die gleiche Sortierung auf weitere Vektoren an.

Das obige ist der detaillierte Inhalt vonWie sortiere ich einen Vektor anhand der Werte eines anderen 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