007
15.10.2003, 11:14 Uhr
RHBaum
|
Aehm, ueberleg mal, warum das so so sein koennte
Deine Map sortiert mittels einer einzigen funktion .... die gibst ja mit DisableSort selber an. DIe Less funktion, gibt an, ob das element kleiner ist ...
Nun muss es die elemente einfuegen, dazu vergleicht es das was in der map schon drinsteht (t1) mit dem was in die map eingefuegt(t2) werden soll.
t1 < t2 -> ja ... t2 < t1 -> nein ... t2 kommt weiter hinter ...
t1 < t2 -> nein ... t2 < t1 -> ja ... t2 kommt vor t1 !
nun undefiniert !!! t1 < t2 -> nein ... t2 < t1 -> nein ... oder t1 < t2 -> ja ... t2 < t1 -> ja ...
Eigentlich sind die elemente GLeich ... also t2 ueberschreibt t1 ...
auf welches muster deine Map nun reagiert, ist glaub ich implementationssache ... versuch mal, deinen DisableSort Funktor auf konstant true zu setzen ....
Prinzipiell ists aber schlechtes design, weil du von der Implementierung abhaengig bist ....
Was du willst ist, die eigenschaften 2er Container gleichzeitig nutzen ... zugriff uber ELemente (map) sequentielle Speicherung mit iteration drauf (list) Dann nutz auch beide ! Schreib dir ne Klasse die als member ne map und ne List hat ... die Map befuellst traditionell ... die List mit Zeiger auf die elemente ... Bau dir nen iterator zu, der nen normalen stl iterator nachbildet ... damit es von aussen verwenden kannst. Ist dir das zu viel aufwand (weil es eh nur einmal brauchst oder so) ... dann aender dein prinzipielles Design ...
Ciao ... |