我需要一个可以保持一对多关系的数据结构。
像学生这样的东西可以参加许多课程。唯一的问题是我可能拥有数千个。一键多值。
map<char,int> mymap;
不允许再次插入相同的密钥。
你可以用std::multimap
这个。
我建议这样做:
std::map<Student, std::vector<Course>> StudentInfos;
您可以使用学生ID作为更快比较的键,或者您可以仅id
在operator<
比较Student
.
如果可以大量复制密钥,std::multimap<Key, T>
请使用。std::multimap<Key, T>::equal_range
这对于整数等可能没问题。
如果您只需要一次密钥,因为您可能需要稍微复杂的密钥,例如 std::string,请使用std::map<Key, std::vector<T>>
及其find
方法。
嵌套容器更适合您的示例。如果您有不同的键,而您的谓词仅“看起来”相同,那么多重映射确实更合适。