Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: std::mapin järjestely

arcatan [03.10.2004 20:16:55]

#

Minulla on ongelma STL:n mappien kanssa. Miten sellaisen saa järjestettyä helposti datan perusteella?

// STL:n manuaalia mukaillen
#include <map>
#include <string>

using namespace std;

int main () {
  map <string, int> months;

  months["january"] = 31;
  months["february"] = 28;
  months["march"] = 31;
  months["april"] = 30;
  months["may"] = 31;
  months["june"] = 30;
  months["july"] = 31;
  months["august"] = 31;
  months["september"] = 30;
  months["october"] = 31;
  months["november"] = 30;
  months["december"] = 31;

  // eli ongelma: miten saisin months-mapin järjestetty siten, että kuukausi, jossa on eniten päiviä tulee ensin jne.
}

Metabolix [03.10.2004 22:37:20]

#

Esimerkiksi BubbleSort-algoritmilla:
Otat toisena olevan ja siirrät ylöspäin kunnes seuraavassa on enemmän päiviä.
Otat kolmentena olevan ja siirrät ylöspäin kunnes seuraavassa on enemmän päiviä.
...
Otat viimeisen kohdan ja siirrät ylöspäin kunnes seuraavassa on enemmän päiviä.

Uskoisin, että lajittelualgoritmeista on ennenkin ollut puhetta...

arcatan [04.10.2004 07:56:50]

#

Siis totta kai voisin tehdä bubble sortin tai vaikka quick sortin, mutta tarkoitan, että kun STL:sää on funktio sort, joka järjestelee iloisesti vektoreita ja listoja, niin että löytyisikö mapillekin vastaava. Mapithan luodaan tyyliin map <key, data, compare, alloc>, mutta tuo alloc on järjestelyä avainten mukaan eikä datan.

arcatan [05.10.2004 07:27:59]

#

Ratkaisin ongelman sitten itse käyttämällä vectoreita mappien sijaan. Ja tuossa yllä olevassa viestissä on virhe, comparea tietenkin siihen järjestelyyn käytetään eikä allocia.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta