multimap
-
Abend,
Ich hab ein paar fragen zu multimap.
Es sind wohl mehr verstaendigungs probleme.Problem 1,
Ich habe einstd::map<int, std::multimap<int, std::string> > maper;
Nun kann ich aber nichts adden... Ich habe versucht:
maper[int][int] = "string"; maper.insert(make_pair(int, make_pair(int, "string")));
Aber keine version wollte er compilieren (gcc-3.3.5)
Problem(frage) 2,
Ich kann bei einem multiset nicht mehr mitmaper[int][2]
zugreifen
Die einzige variante wird also mit iteratoren sein?Danke fuer hilfe,
GgETID
Hmm... hab es jetzti mit einemstd::map<int, std::map<int, std::vector<std::string> > > mapen;
Geloehst Aber auf eine antwort waehre ich trotzdem froh,
man Lehrnt ja nie ausGg
-
Hallo,
zu 1:
Das kann nicht klappen, da multimap keinen Ctor für ein pair hat.
Zu 2:
Du kannst dir auch die jeweiligen multimaps per key holen und dann die multimaps bearbeiten.
Und wenn du so ein Konstrukt wie in deiner "Lösung" brauchst, solltest du dein Design noch mal überdenken. Man weiß ja nie, vllt. geht's etwas simpler?!
MfG
GPC
-
Da du eine zweischichtige Struktur hast, mußt du auch zweischichtig darauf zugreifen:
maper[2].find(7)->second="hallo";//trägt "hallo" im Feld 2,7 ein maper[3].insert(make_pair(5,"echo"));//fügt 5,"echo" neu in Feld 3 ein
(und der Index-Operator funktioniert nur auf maps - bei einer multimap wüßte er gar nicht, welches der möglichen Elemente er liefern sollte)