multimap mit std::pair als key



  • habe eine multimap mit std::pair als key

    ein wenig code:

    typedef std::pair<int,int> KeyType;
    typedef std::multimap<KeyType, Irgendwas*> MyMap;
    MyMap mymap_;
    
    mymap_.insert(MyMap::value_type(KeyType(x,y), pIrgendwas));
    

    es ist völlig egal was ich für y angebe, wenn x nicht vorhanden ist, ist it = mymap_.end()

    MyMap::iterator it = mymap_.lower_bound(KeyType(x,y));
    

    Ich brauche aber 2 Schlüssel nach denen ich getrennt suchen kann.
    Es ist doch bestimmt möglich nach dem value_type von pair zu suchen, aber wie?



  • Logisch, das nichts gefunden wird. Schliesslich muss der Schlüssel (=das gesamte Paar) übereinstimmen!

    Bye, TGGC (Denken, und gut ist.)



  • lösung: eigene vergleichsfunktion definieren



  • Das wird IMHO nicht gehen. Denn wenn (x1,y1) < (x2,y2) aber (x1,y1) = (x1,y2) = (x2,y2), dann gibt es keine totale Ordnung mehr?

    Bye, TGGC (Denken, und gut ist.)



  • muss er halt jedesmal umsortieren :D, aber das ist doch nicht soo schlimm, oder etwa doch? ja? oooch...egal 🤡

    so, jetzt ma ernsthaft:

    Ich brauche aber 2 Schlüssel nach denen ich getrennt suchen kann.
    Es ist doch bestimmt möglich nach dem value_type von pair zu suchen, aber wie?

    std::map ist auf ein schlüssel/wertpaar ausgelegt, mit 2 schlüsseln kommt die map nicht klar(nach welchen werten sollte die map sortieren?).
    was du machen könntest, ist 2 separate maps benutzen, deren elemente zeiger auf deine datenelemente sind, ne andre chance hast du nicht.


Anmelden zum Antworten