C++: map rendezése érték szerint

Fórumok

Sziasztok!

A következő feladathoz kérném a segítségeteket:

Van egy szöveg, és az abban található szavak előfordulását kell megszámolni, majd ki kell tudni íratni a szavak ábécérendjében növekvő/csökkenő, valamint előfordulás szerint növekvő/csökkenő sorrendben is. STL alapú konténerekkel és műveletekkel kell megoldani a feladatot.

Arra gondoltam, hogy map-et használok, a szavak szerint kulcsolva, az érték pedig az előfordulások száma.
A map feltöltése, valamint a kulcs szerint kiírás növekvő/csökkenő kiírás nem is probléma (forward/reverse iterátor van a map-ben), viszont az érték szerinti növekvő/csökkenő kiírásra nincs értelmes ötletem.

Esetleg az, hogy végigmegyek a map-en kulcs szerint, és minden kulcs-érték párt beteszek egy másik fordítva kulcsolt map-be (tehát a kulcs az előfordulások száma, és érték a szöveg). Ekkor viszont probléma az, ha több szó ugyanannyiszor fordul elő.

Van ötletetek erre a problémára?

Petya

Hozzászólások

Csinálsz egy kulcsot és értéket tartalmazó struktúrát és ebből a struktúrából egy vector-t.
A struktúrának kell egy less operátor is.
Végig-iterálsz a map-en, átpakolod a tartalmát a vector-ba, majd sort.

"Esetleg az, hogy végigmegyek a map-en kulcs szerint, és minden kulcs-érték párt beteszek egy másik fordítva kulcsolt map-be (tehát a kulcs az előfordulások száma, és érték a szöveg). Ekkor viszont probléma az, ha több szó ugyanannyiszor fordul elő."

Multimap

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o