Seite 1 von 1

QMap Schlüssel

Verfasst: 12. März 2009 20:56
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");


Verfasst: 12. März 2009 21:04
von Christian81
Falscher Container oder Doku nicht gelesen: QMap::insert()

Verfasst: 12. März 2009 21:08
von CLRS530
Schau dir mal QHash an.

Verfasst: 12. März 2009 21:31
von anno1988
CLRS530 hat geschrieben:Schau dir mal QHash an.
hm also beim hash ist es genau so wie bei der map

Verfasst: 13. März 2009 06:31
von Christian81
Ist es so schwer beim durchlesen der QMap-Doku auf QMultiMap zu kommen?

Verfasst: 13. März 2009 08:57
von cooky1976
Willst Du denn überhaupt 2 Wertepaare in Deinem Container haben? Wenn nicht, dann überprüfe einfach auf contains() davor

Verfasst: 13. März 2009 09:07
von upsala
@cooky1976: Schau dir doch bitte selbst erst mal die Funktionsweise von QMap/QHash an. Da braucht man kein contains().

Verfasst: 13. März 2009 14:49
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 ?

Verfasst: 13. März 2009 14:54
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.

Verfasst: 13. März 2009 15:10
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.

Verfasst: 13. März 2009 17:10
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 ...

Verfasst: 16. März 2009 08:14
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: