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());
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; }
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!