2つのキー値を使用してマップを作成する方法

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?

前もって感謝します

0
std :: pair が提供している「キークラス」は何を提供していますか?
追加された 著者 Jon,
宿題の場合は、タグを付けてください。この場合、3prパーティライブラリが含まれていない適切な回答が返されます
追加された 著者 Andriy Tylychko,
@AndyTは宿題ではありません。私はベストプラクティスを探していました。
追加された 著者 Saaras,

3 答え

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
追加された
+ 1の最後の推奨事項は、 date date に依存している可能性が高いため、
追加された 著者 Andriy Tylychko,

2つのキー値を持つマップを作成することはできません。複雑なキー値(2つのタイプで構成されています)を使用してマップを作成できます。しかし、これは、時刻にかかわらず、今週の曜日の地図を見ることはできません。私はキーとして使用する新しいクラスを作成し、ちょうど1日かちょうど時間で働くことができるいくつかのヘルパー関数を作成します。

また、 Boost.MultiIndex の使用例を参考にしてください。

0
追加された
@アンディT:なぜそう?今週の午後8時のすべてのアクティビティだけでなく、今週の月曜日のすべてのアクティビティをスケジュールで検索することができます。
追加された 著者 K-ballo,
time のように見えるのは day です。この場合、単に time での索引付けは意味がありません。 @Ben Voigtによって提案された map > は正解のように聞こえます。
追加された 著者 Andriy Tylychko,
一般的には合意しましたが、私はそれが宿題であると感じており、より簡単な要件と簡単な解決策につながります。ええ、それは私の仮説です。
追加された 著者 Andriy Tylychko,
ごめんなさい。実際に私は例として学校の時間表を述べました。私は実際に複雑なキー/複合キーという言葉を得ていませんでした。ですから、私はこの例を使用しました。ありがとう
追加された 著者 Saaras,
埋め込みプロジェクトで働いている私はboostライブラリを使用することはできません。私は組み込みシステムのためにブーストを使うという賛否両論について読んでいました。私はまだ自分のプロジェクトにSTLコンテナを使用するかどうか混乱しています(STLコンテナと組み込みシステムの関連記事を読んでください)。
追加された 著者 Saaras,

あなたはそれをtypedefすることができます。

typedef pair key;
map myMap = new map();
0
追加された