Angenommen, ich habe 10 Punkte mit den Koordinaten (x, y) .i die Punkte in irgendeiner Art und Weise sortieren, muß (1), die x Wert kleiner als andere in früheren Position sein werden als andere (2) wenn x Wert von zwei Punkten sind die gleichen dann die y Wert ist weniger als andere werden in früherer Position.So wie kann ich diese Punkte sortieren?Wie sortiere ich die Koordinaten für x- oder y-Werte der Koordinaten?
Antwort
einen Lambda-Ausdruck verwenden:
std::sort(pts.begin(), pts.end(), [](const auto& a, const auto & b) {
return a.x < b.x || (a.x == b.x && a.y < b.y);
});
Nicht alle Compiler auto
als Lambda-Parametertyp akzeptieren. Daher müssen Sie möglicherweise anstelle von auto
den korrekten Typnamen verwenden.
Wenn Sie eine Struktur verwenden, definiert ein Benutzer weniger als Operator helfen sollte:
struct Point
{
int x, y;
};
bool operator<(const Point& a, const Point& b)
{
return a.x < b.x || (a.x == b.x && a.y < b.y);
}
Um eine std::vector<Point>
nach Ihren Wünschen zu sortieren, müssen Sie nur noch
std::sort(pts.begin(), pts.end());
schreiben und es wird Ihren benutzerdefinierten Kleiner-als-Operator verwenden.
Ganz einfach:
#include <algorithm>
#include <utility>
#include <vector>
std::vector<std::pair<int, int>> points;
// populate
std::sort(points.begin(), points.end());
Also ist 'std :: pair' von der ersten zur zweiten geordnet? –
@AndreasH. Siehe [operator ==,! =, <,<=,>,> = (std :: pair)] (http://en.cppreference.com/w/cpp/utility/pair/operator_cmp), "Vergleicht lhs und rhs lexikographisch, das Ist, vergleicht die ersten Elemente und nur wenn sie äquivalent sind, vergleicht die zweiten Elemente. " – songyuanyao
- 1. GeoCoordinate oder DbGeography für Koordinaten?
- 2. die X- und Y-Koordinaten für ein Div-Element erhalten
- 3. Looping durch Koordinaten, neue Koordinaten hinzufügen
- 4. Wie finde ich die Koordinaten einer Adresse?
- 5. Wie bekomme ich die Koordinaten eines MKAnnotationView?
- 6. Wie bekomme ich UIImageView Koordinaten?
- 7. X-Koordinaten jeder yAchse im HighStock-Diagramm
- 8. Ländername für GPS-Koordinaten
- 9. Wie bekomme ich x, y Koordinaten mit Python?
- 10. WPF Popup Control - Finde X, Y Koordinaten
- 11. UILabel-Einstellung x, y-Koordinaten programmatisch
- 12. Konvertieren von lokalen Koordinaten zu globalen Koordinaten
- 13. Konvertieren NSPoint in Bildschirm-Fenster-Koordinaten Koordinaten
- 14. Finden der Koordinaten x y z der Mitte einer Oberfläche
- 15. NSTextFieldCell Koordinaten
- 16. x-Koordinaten aus String-Werten (Text) für ein Liniendiagramm machen
- 17. Bewegt Bild durch verschiedene x, y Koordinaten
- 18. X- und Y-Koordinaten aus String extrahieren
- 19. Konvertiere UIKit Koordinaten in SpriteKit Koordinaten
- 20. Wie eine Liste der xy-Koordinaten sortieren
- 21. android Startbildschirm Widget x-y Koordinaten
- 22. KML-Koordinaten
- 23. Wie man verbundene Koordinaten abfragt?
- 24. x- und y-Koordinaten der Mausposition in Photoshop
- 25. Android Crop-Koordinaten
- 26. Besser ein Tupel oder numpy Array verwenden für Koordinaten
- 27. Datenstruktur für große geographische Koordinaten?
- 28. pywinauto Koordinaten
- 29. wie explizit SVG Sichtbox Koordinaten
- 30. Wie konvertiere ich diese Koordinaten in Koordinaten, die von Google Maps gelesen werden können?
Neben ein C++ Buch zu lesen, ich an der Vergleichs- Funktion aussehen würde Sie können sortieren() übergeben. –
['std :: pair'] (http://en.cppreference.com/w/cpp/utility/pair) hat 'operator
songyuanyao