Hoe een kaart met 2 sleutelwaarden te maken

I am looking for something like a school time table. Based on two input - Day of the week and Time of the day, one decides the subject. To implement this in c++, I was thinking of something like "map < pair < int, int>, int>". I was reading here to use a key class and operator overloading. Is there any other elegant way of doing it?

Bij voorbaat dank

0
Wat biedt de "sleutelklasse" die std :: pair niet biedt?
toegevoegd de auteur Jon, de bron
als het een huiswerk is, label het dan. in dit geval ontvangt u de juiste antwoorden waarbij geen 3pr-partybibliotheken betrokken zijn
toegevoegd de auteur Andriy Tylychko, de bron
@AndyT het is geen huiswerk. Ik was op zoek naar enkele best practices.
toegevoegd de auteur Saaras, de bron

3 antwoord

That's not a map with two keys (which would allow you to look up items from knowledge of just one key), it's a composite key, and map, subject> should work just fine.

Also consider map>.

1
toegevoegd
+1 voor de laatste aanbeveling, het klinkt als de juiste omdat het meest waarschijnlijk tijd afhankelijk is van datum .
toegevoegd de auteur Andriy Tylychko, de bron

U kunt geen kaart maken met 2 sleutelwaarden, u kunt een kaart maken met een complexe sleutelwaarde (samengesteld uit twee typen). Dit laat je echter niet naar de kaart kijken voor bijvoorbeeld alleen de dag van de week, ongeacht het tijdstip van de dag. Ik zou een nieuwe klasse maken om als sleutel te gebruiken, en een aantal hulpfuncties om met de dag of juist de tijd te kunnen werken.

Ook, voor uw gebruik kan case Boost.MultiIndex u helpen.

0
toegevoegd
@Andy T: Waarom zo? Ik zou verwachten dat ik op een rooster alle activiteiten voor deze maandag kan doorzoeken, evenals alle activiteiten voor deze tijd van 20:00 uur.
toegevoegd de auteur K-ballo, de bron
Het lijkt erop dat tijd afhangt van dag . In dit geval heeft indexeren op slechts tijd geen zin. Dus kaart > voorgesteld door @Ben Voigt klinkt als correct antwoord.
toegevoegd de auteur Andriy Tylychko, de bron
Overeenstemd in het algemeen, maar ik heb het gevoel dat het een huiswerk is, dat leidt tot eenvoudigere eisen en eenvoudigere oplossingen. Ja, het is maar mijn hypothese.
toegevoegd de auteur Andriy Tylychko, de bron
Sorry. Eigenlijk noemde ik het schooltijdschema als voorbeeld. Ik heb het woord complexe sleutel/samengestelde sleutel eigenlijk niet gekregen. Dus om het duidelijk te maken, had ik het voorbeeld gebruikt. Bedankt
toegevoegd de auteur Saaras, de bron
Ik kan de boost-bibliotheek niet gebruiken als ik aan een ingebed project werk. Ik had gelezen over de voors en tegens van het gebruik van boost voor embedded systeem. Ik ben nog steeds in de war of ik STL-containers gebruik voor mijn project (lees de relevante berichten van STL-containers en ingesloten systemen).
toegevoegd de auteur Saaras, de bron

Je zou het kunnen typen.

typedef pair key;
map myMap = new map();
0
toegevoegd