multimap



  • Abend,

    Ich hab ein paar fragen zu multimap.
    Es sind wohl mehr verstaendigungs probleme.

    Problem 1,
    Ich habe ein

    std::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 mit

    maper[int][2]
    

    zugreifen
    Die einzige variante wird also mit iteratoren sein?

    Danke fuer hilfe,
    Gg

    ETID
    Hmm... hab es jetzti mit einem

    std::map<int, std::map<int, std::vector<std::string> > > mapen;
    

    Geloehst 😃 Aber auf eine antwort waehre ich trotzdem froh,
    man Lehrnt ja nie aus 😉

    Gg



  • 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)


Log in to reply