2012-07-18 208 views
0

我需要一個可以保存一對多關係的數據結構。映射一對多關係

有些像學生一樣可以參加很多課程。唯一的事情是我可能有成千上萬的順序。多重價值的關鍵之一。

map<char,int> mymap;不允許再次插入相同的密鑰。

+0

這很混亂。你想要多個相同的密鑰嗎? – jrok 2012-07-18 12:03:17

+0

請停止向原始問題添加其他問題(說明無誤)。原來的問題得到了回答,沒有人願意回答一個不斷變化的問題。 – 2012-07-18 12:05:10

+0

只要所有學生的名字不同,std :: map就好了。 – 2012-07-18 12:06:39

回答

1

使用std::multimap<Key, T>std::multimap<Key, T>::equal_range如果可以複製密鑰很多。對於整數等這可能是可以的。

如果你只想要你的密鑰一次,你可能會想要稍微複雜一點的密鑰,比如std :: string,使用std::map<Key, std::vector<T>>及其find方法。

嵌套容器更適合您的示例。如果你有不同的關鍵字,只有「看起來」和你的謂詞相同,那麼multimap才更合適。

2

我建議這樣的:

std::map<Student, std::vector<Course>> StudentInfos; 

你只可以使用學生ID關鍵更快的比較,或者比較Student兩種情況下,你可以在operator<僅比較id