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.