Alles rund um die Programmierung mit Qt
anno1988
Beiträge: 280 Registriert: 23. Januar 2009 20:49
Beitrag
von anno1988 » 12. März 2009 20:56
hallo,
wie kann ich denn in einer QMap erzwingen, dass immer nur der erste Schlüssel mit Wert verwendet wird, der eingefügt wurde.
bei folgendem code würde ich ja als Wert "124" herausbekommen, ich wollte aber "123":
Code: Alles auswählen
map.insert("test", "123");
map.insert("test", "124");
Christian81
Beiträge: 7319 Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:
Beitrag
von Christian81 » 12. März 2009 21:04
Falscher Container oder Doku nicht gelesen:
QMap::insert()
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
CLRS530
Beiträge: 155 Registriert: 8. Oktober 2007 18:00
Beitrag
von CLRS530 » 12. März 2009 21:08
Schau dir mal QHash an.
anno1988
Beiträge: 280 Registriert: 23. Januar 2009 20:49
Beitrag
von anno1988 » 12. März 2009 21:31
CLRS530 hat geschrieben: Schau dir mal QHash an.
hm also beim hash ist es genau so wie bei der map
Christian81
Beiträge: 7319 Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:
Beitrag
von Christian81 » 13. März 2009 06:31
Ist es so schwer beim durchlesen der QMap-Doku auf QMultiMap zu kommen?
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
cooky1976
Beiträge: 76 Registriert: 24. Januar 2008 00:19
Beitrag
von cooky1976 » 13. März 2009 08:57
Willst Du denn überhaupt 2 Wertepaare in Deinem Container haben? Wenn nicht, dann überprüfe einfach auf contains() davor
upsala
Beiträge: 3946 Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:
Beitrag
von upsala » 13. März 2009 09:07
@cooky1976: Schau dir doch bitte selbst erst mal die Funktionsweise von QMap/QHash an. Da braucht man kein contains().
anno1988
Beiträge: 280 Registriert: 23. Januar 2009 20:49
Beitrag
von anno1988 » 13. März 2009 14:49
Christian81 hat geschrieben: Ist es so schwer beim durchlesen der QMap-Doku auf QMultiMap zu kommen?
was hat denn das jetzt damit zu tun?
wenn ich gewollt hätte, dass ide schlüssel mehrfach vorkommen düfen hätte ich das schon erwähnt.
@upsala: was soll ich da deiner meinung nach dann verwenden ?
Christian81
Beiträge: 7319 Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:
Beitrag
von Christian81 » 13. März 2009 14:54
Es war die einzigste Möglichkeit auf Deine Frage zu antworten. Wie die Doku nunmal sagt überschreibt insert() den Wert, was auch nicht wirklich verwunderlich ist. Das Du also überprüfst ob der Wert ggf. schon drin ist sollte ja trivial sein, also konnte meines Erachtens die einzigste Frage sein wie man mehr als einen Wert einfügen kann. Und dies geht nur mit QMultiMap.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
CLRS530
Beiträge: 155 Registriert: 8. Oktober 2007 18:00
Beitrag
von CLRS530 » 13. März 2009 15:10
QMap ist ganz einfach nicht für mehere gleiche Schlüssel.
Wir wissen auch gar nicht was du machen möchtest. Wenn so etwas vorkommen kann ist im Normalfall QHash zu benutzten (oder QMultiHash, ich weiß nicht wie die Klassen in Qt implementiert sind).
Christian hat genau recht. Du machst stark den Eindruck, als ob du das gewollt hättest. Du hast nur gesagt, den ersten Wert zu wollen. Aber, dass du den eigentlich überhaupt nicht in deinem QMap drinne haben willst war nie die Rede.
Nicht hinzubekommen, zu überprüfen, ob ein Schküssel bereits in deiner Menge vorhanden ist, ist doch wirklich lächerlich.
RHBaum
Beiträge: 1436 Registriert: 17. Juni 2005 09:58
Beitrag
von RHBaum » 13. März 2009 17:10
Glaub das war einfach nicht seine frage ^^
denk mal was er will, ist wenn 123 in der Map ist, das er bei 124 den wert bekommt, der bei 123 drinnesteht ... also den vorherigen ???
So hab ichs verstanden zumindstet.
@ Anno1988
Das geht natuerlich ned so einfach ...
schau dir in der doku die funktionen upper_bound und lower_bound an, mit denen solltest du sowas bauen koennen ....
Ciao ...
pfid
Beiträge: 535 Registriert: 22. Februar 2008 16:59
Beitrag
von pfid » 16. März 2009 08:14
anno1988 hat geschrieben:
wenn ich gewollt hätte, dass ide schlüssel mehrfach vorkommen düfen hätte ich das schon erwähnt.
Du schreibst erst 123 in deine QMap, danach 124, und als Rückgabe willst du 123.
Das ist jetzt deine Problemstellung?