映射一对多关系

Map for one to many relationships

本文关键字:关系 一对多 映射      更新时间:2023-10-16

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

像学生这样的人可以参加很多课程。唯一的问题是,我可能有成千上万的订单。一个键到多个值。

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

您可以为此使用std::multimap

我建议这样做:

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

您可以使用studentid作为更快比较的关键字,或者在比较Student的两个实例时,您可以只比较operator<中的id

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

如果您只想要一次密钥,就像您可能想要稍微复杂一点的密钥一样,比如std::string,请使用std::map<Key, std::vector<T>>及其find方法。

嵌套容器更适合您的示例。只有当你有不同的键,而这些键只是"看起来"与你的谓词相同时,多映射才更合适。