映射一对多关系

时间:2012-07-18 11:57:23

标签: c++ maps

我需要一个可以保持一对多关系的数据结构。

像学生这样的东西可以参加很多课程。唯一的事情是我可能会有成千上万的数量。多个价值观的一个关键。

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

3 个答案:

答案 0 :(得分:3)

您可以使用std::multimap

答案 1 :(得分:2)

我会建议:

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

您可以使用学生 id 作为更快比较的关键,或者在比较id的两个实例时,您只能比较operator<中的Student。< / p>

答案 2 :(得分:1)

如果可以重复复制密钥,请使用std::multimap<Key, T>std::multimap<Key, T>::equal_range。这对于整数等可能是可以的。

如果您只需要一次密钥,因为您可能需要更复杂的密钥,例如std :: string,请使用std::map<Key, std::vector<T>>及其find方法。

嵌套容器更适合您的示例。如果你有不同的键只是与你的谓词“相似”相同,那么多图实际上更合适。