QMap Schlüssel

Alles rund um die Programmierung mit Qt
Antworten
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

QMap Schlüssel

Beitrag von anno1988 »

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 »

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 »

Schau dir mal QHash an.
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

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 »

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 »

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 »

@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 »

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 »

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 »

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 »

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 »

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? :lol:
Antworten