Vektor der Vektoren sortieren

8

Ich habe

%Vor%

in meiner C ++ App.

Jeder Vektor von ganzen Zahlen als Element eines "großen" Vektors hat 4 INT-Werte. Ich möchte vec basierend auf dem dritten Wert seiner Inhaltsvektoren von ints sortieren (ich meine jedes "innere" vector dritte Element) - ist das möglich?

BEARBEITEN

Sagen wir, ich habe eine Funktion

%Vor%

was berechnet einen Wert basierend auf meinen Vektorwerten - kann ich ihn auch in Vergleichsparametern verwenden? Es würde mir viel mehr helfen.

    
pawel 19.01.2013, 22:23
quelle

3 Antworten

21

Sicher ist es. std::sort kann einen dritten Parameter verwenden, der die zu verwendende Vergleichsfunktion beim Sortieren ist. Zum Beispiel könnten Sie eine Lambda-Funktion verwenden:

%Vor%

Alternativ können Sie auch alle anderen Funktionen übergeben, die mit der Signatur bool(const std::vector<int>&, const std::vector<int>&) aufgerufen werden können, z. B. einen Funktor oder Funktionszeiger.

Antwort zum Bearbeiten: Wenden Sie einfach Ihre Funktion COST auf a und b :

an %Vor%     
Joseph Mansfield 19.01.2013, 22:28
quelle
4

Wenn Sie die beiden Vektoren nach Kosten vergleichen möchten, versuchen Sie Folgendes:

%Vor%

Anmerkungen:

  • Das obige funktioniert auch mit C ++ 98. Ich bin mir nicht sicher, wie verbreitet die Verwendung von C ++ 11 ist und ob Sie einen kompatiblen Compiler haben. Ansonsten können Sie natürlich auch einen Lambda-Ausdruck verwenden, wie sftrabbit vorgeschlagen hat.
  • Sie sagen nicht, was COST zurückgibt, ich habe einfach einen sortierbaren Wert wie float oder long angenommen.
  • Ich hoffe, Sie kopieren den Vektor nicht, wenn Sie ihn an COST () übergeben, das wäre schrecklich ineffizient.
  • COST schlägt wie alle UPPERCASE_NAMES ein Makro vor. Verwenden Sie keine Makros. Verwenden Sie keine Makronamen für Funktionen.
Ulrich Eckhardt 19.01.2013 23:14
quelle
0
%Vor%

Quelle: Ссылка

    
GPB83 24.11.2015 16:30
quelle

Tags und Links