ich habe eine Frage, evtl kann mir einer weiterhelfen.
ich habe eine map mit Objekten.
Der key ist eine ID und dazu gibt es immer ein Objekt der folgenden Klasse. (siehe Code)
ich möchte nun die Reihenfolge der Objkete ändern. Und zwar möchte ich nach dem StartValue sorterien.
Also zb:
die Map:
0, itemA (hat einen getStartValue von 1000)
1, itemB (hat einen getStartValue von 1009)
2, itemC (hat einen getStartValue von 1003)
3, itemD (hat einen getStartValue von 1005)
soll nun nach den StartValues sortiert werden:
0, itemA (hat einen getStartValue von 1000)
1, itemC (hat einen getStartValue von 1003)
2, itemD (hat einen getStartValue von 1005)
3, itemB (hat einen getStartValue von 1009)
Code: Alles auswählen
class Item
{
public:
Item();
void setUniqueID(std::string id);
std::string getUniqueID();
void setStartValue(int value);
int getStartValue();
//...some more functions
private:
std::string m_id;
int m_startVaule;
//...
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// ....
std::map<int, Item*> itemList;
// sort the itemList dependend on StartValue, but how?!
return a.exec();
}
ich habe mir qsort und so angesehen, jedoch fehlt mir das Verständnis, das auf Objekte anzuwenden. Bei einfachen arrays kann ich es nachvollziehen, aber hier weiß ich nihct wie ich das mache.
Mir fällt nur folgendes ein:
über die Map iterieren und die Startvalues in einen Vektor schreiben.
Diesen Vektor sortieren mit einer sort funktion
Dann wieder über die Map iterieren und den Vektor mit den Items vergleichen und irgendwie so die Reihenfolge ändern. Aber da gibt es doch bestimmt eine einfachen Weg oder ?