Sortieren tatsächlichen QMap durch Schlüssel
Habe ich QMap<QString, MyClass*>
. Ich brauche zu Sortieren, die durch Schlüssel mit natürlichen Vergleich.
Ich:
std::map<QString, MyClass*> map = c.toStdMap();
std::sort(map.begin(), map.end(), strnatcmp1<std::pair<QString, MyClass*>>);
Allerdings bedeutet dies nicht selbst kompilieren. Und selbst wenn es Tat, soweit ich das verstanden habe, wäre es eine Art kopieren meiner ursprünglichen QMap
.
Gibt es eine Möglichkeit zum Sortieren meine QMap
durch die Taste mit der Funktion zum Vergleich von Schlüsseln zur Verfügung gestellt?
Warum würden Sie dies tun?! Ein QMap ist ein rot-schwarz-Baum, es ist bereits sortiert nach den Schlüssel.
Wenn der Schlüssel QString, es ist sortiert lexikalisch ( 1 10 11 2 3 4 ), aber ich brauche Natürliche Vergleich ( 1 2 3 4 10 11 ).
In diesem Fall, warum nicht verwenden, die einen int als Schlüssel?
Weil QString ist bereits überall verwendet in dem Projekt. Es war nicht ich, der dies schrieb-software
Wenn der Schlüssel QString, es ist sortiert lexikalisch ( 1 10 11 2 3 4 ), aber ich brauche Natürliche Vergleich ( 1 2 3 4 10 11 ).
In diesem Fall, warum nicht verwenden, die einen int als Schlüssel?
Weil QString ist bereits überall verwendet in dem Projekt. Es war nicht ich, der dies schrieb-software
InformationsquelleAutor Oleksandra | 2014-10-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie mehrere appoaches, dass Sie nehmen konnten:
Aufbewahrung der Schlüssel, wie ganze zahlen nach der Konvertierung
QString
eine Ganzzahl.Können Sie die compare-Klasse std::map als pro Beispiel:
Können Sie versuchen, zu verwenden sind spezialisiert diese template-Funktion , QMap verwendet für den Vergleich.
main.cpp
main.pro -
Erstellen und Ausführen
- Ausgang
lhs.toInt()<rhs.toInt();
für mich gearbeitet.InformationsquelleAutor lpapp