Seite 1 von 1
QVector mit unterschiedlichen Datentypen
Verfasst: 20. Januar 2011 00:26
von Tuxing
Hallo Leute,
wie erstelle ich einen QVector mit unterschiedlichen Datentypen ? Ist das überhaupt möglich ? Standardmäßig lege ich einen Vektor wie folgt an (z.B. um QStrings zu speichern):
Jetzt will ich aber nicht nur QStrings sondern auch ints und andere QVectoren in einem Vector speichern. Wie muss ich das anstellen ? Was muss ich da als Template übergeben ?
Danke schonmal
Grüße
Verfasst: 20. Januar 2011 06:28
von Christian81
Sowas ist nicht möglich - was soll es außerdem bringen? Woher weisst Du an welcher Stelle im Vector ein int und wo ein String steht??
Verfasst: 20. Januar 2011 10:00
von dontinelli
Aber ein QVector mit QVariant sollte gehen, oder? Da geht zwar kein weiterer QVector rein, aber sonst allerhand Datentypen.
Verfasst: 20. Januar 2011 10:34
von RHBaum
Da geht zwar kein weiterer QVector rein, aber sonst allerhand Datentypen.
nicht adhoc, aber mit etwas aufwand schon
QStringList's gehen z.b. adhoc
Die Frage ist nur, wenn er Variants /Unions/"Stackverwalter fuer dynamisch Speicherklassen" da speichern will, warum einen Vector ???
unter QT sollte es dann ne QList allemal tun ....
Also der TE sollte sich schon mal mit container beschaeftigen, und deren Anwendung, wo was sinnvoll ist ...
Ciao ...
Verfasst: 20. Januar 2011 11:35
von upsala
Ansonsten gäbe es noch union, aber da wären wir wieder bei Grundlagen...
Verfasst: 20. Januar 2011 13:34
von Tuxing
hm .. ich hatte nen bisschen gehofft das der QVector als eine Art Container missbraucht werden könnte. Ist aber auch nicht weiter schlimm wenns nicht geht. Das war nur mal reines Interesse ob es möglich ist.
Vielen Dank für die Antworten.
@Christian81: Wenn ich vorher selber definiert habe an welcher Stelle welcher Datentyp steht, wäre es ja eindeutig. Eine Art Konvention die ich für meine Software einführe.
@dontinelli: QVariant hatte ich mir auch angeschaut, aber dann leider auch festgestellt das dort kein QVector rein passt.
Ich denke ich werde auf ein Listenmodell zurückgreifen, oder mir selber einen Datentypen schreiben, der die nötigen Funktionen bereitstellt...
Grüße
Verfasst: 20. Januar 2011 14:25
von RHBaum
ich hatte nen bisschen gehofft das der QVector als eine Art Container missbraucht werden könnte.
der vector gehoert definitiv zu den containerklassen, also man muss ihn nicht "Missbrauchen" um Ihn zu einem container zu machen.
Problem ist nur, das container nur Elemente gleichen types speichern koennen ....
Die Loesungen für dieses "problem" teilen sich in 2 Richtungen:
1: Mehrere container verwenden
2: Die unterschiedlichen Typen auf einen gemeinsamen Typ runterklopfen.
Punkt 2 teilt sich dann noch mal in 2 Richtungen:
2.a Polymorphy
2.b Speicher Uminterpretation: Unions und "miese" casts und sowas
Container in Container geht dann natuerlich auch ....
und das der Vector sicher nicht der beste container fuer dein Zweck sein wird. Wie gesagt, Listen (QList, std::list ... ) würden wahrscheinlich auch ihren zweck tun, und dabei performanter und unkritischer sein ...
Ciao ...
Verfasst: 20. Januar 2011 17:48
von padreigh
QStringList kennst du aber auch?