Seite 1 von 1

Datentyp Liste/QMap

Verfasst: 7. April 2011 14:44
von rvb
Hallo Forum,

was wäre hier der geeignete Datentyp?
Ich habe eine Handvoll Datenpaare (Zahl - Text), sowohl Zahl als auch Text sind jeweils eindeutig. Die Zahl soll geändert werden können. Zu bestimmten Zeitpunkten muss ich die "Liste" nach den Zahlen absteigend sortieren können um herausfinden zu können wieviele Datensätze vor und hinter einem bestimmten anderen Datensatz liegen.

Beispiel:
Durchlauf 1: (1 - bla), (2 - blup), (6 - foo)
Durchlauf 2: (1- bla), (8 - blup), (6 - foo)
Sortieren nach Durchlauf 2: (8 - blup), (6 - foo), (1- bla)

Mein Ansatz wäre ein QMap. Oder gibt es da noch was Besseres?

Grüße Roland

Verfasst: 7. April 2011 17:30
von solarix
Ein QMap ist (wie der Name vermuten lässt) keine Liste.. da werden die Elemente beim Einfügen bereits eingeordnet (du hast also keinen Einfluss mehr auf die Reihenfolge).

Wenn du also selbst die Kontrolle über die Reihenfolge behalten möchtest, brauchst du eher was anderes:


... eine Handvoll Datenpaare (Zahl - Text), sowohl Zahl als auch Text .... muss ich die "Liste" nach den Zahlen absteigend sortieren können
Das klingt doch eher nach

Code: Alles auswählen

 QList<QPair<int, QString> >    mFooList;
hth..

Verfasst: 7. April 2011 20:41
von rvb
Danke, klingt schonmal gut.

Nur habe ich da das Problem, dass ich folgende Meldung bekomme sobald ich das Programm starte: "Das Programm ist abgestürzt."

Im Debug sieht es so aus, als wenn es hier crasht ui_mainwindow.h:

Code: Alles auswählen

 centralWidget = new QWidget(MainWindow); 
was komisch ist, denn ich füge die Zeile in testteil.h hinzu, ohne die Zeile läuft es sauber durch

Code: Alles auswählen

#include <QMap>
#include <QPair>
#include <QList>

class Testteil
{ 
[...]  
private:
QList< QPair<int, QString> >    ttliste;
}
Hab ich was Entscheidenes vergessen? Denn wenn ich die QList-Zeile in mainwindow.h einfüge geht es auch. Nur will ich, dass es Bestandteil von Testteil ist.
Und eigentlich wollte ich, dass ttliste ein Pointer ist. Wie würde der Code dann dafür aussehen?

Verfasst: 8. April 2011 08:46
von franzf
Poste mal mehr Code, in den Zeilen die du uns zeigst ist kein Fehler (bis auf den felenden ";" hinter der Klassendefinition von Testteil).

Verfasst: 8. April 2011 17:27
von rvb
Hi, ich hab vorhin mal versucht aus meinem Code ein Minimalbeispiel zu machen. Da läuft alles wie gewollt.

Also Danke allerseits für die Unterstützung