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

 ( _Petya_ | 2008. november 6., csütörtök - 17:10 )

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ás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Az biztos nem, mert a sort RandomAccessIteratort-t vár, a map meg BidirectionalIterator-t ad...

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

(Nem írtam, hogy a map-en kell menni.)

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.

"Végig-iterálsz a map-en, átpakolod a tartalmát a vector-ba, majd sort."

Alternatív megoldás:
push_heap-pel töltsd fel a vektort...

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

"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