QVector mit unterschiedlichen Datentypen

Verschiedenes zu Qt
Antworten
Tuxing
Beiträge: 52
Registriert: 28. Oktober 2009 11:13

QVector mit unterschiedlichen Datentypen

Beitrag 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):

Code: Alles auswählen

QVector<QString> vector;
vector << "Hallo" << "Welt";
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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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??
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Beitrag von dontinelli »

Aber ein QVector mit QVariant sollte gehen, oder? Da geht zwar kein weiterer QVector rein, aber sonst allerhand Datentypen.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag 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 ...
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Ansonsten gäbe es noch union, aber da wären wir wieder bei Grundlagen...
Tuxing
Beiträge: 52
Registriert: 28. Oktober 2009 11:13

Beitrag 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
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag 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 ...
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

Code: Alles auswählen

QVector<QString> vector;
vector << "Hallo" << "Welt"; 
QStringList kennst du aber auch?
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
Antworten