1

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

像学生这样的东西可以参加许多课程。唯一的问题是我可能拥有数千个。一键多值。

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

4

3 回答 3

3

你可以用std::multimap这个。

于 2012-07-18T11:57:58.900 回答
2

我建议这样做:

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

您可以使用学生ID作为更快比较的键,或者您可以仅idoperator<比较Student.

于 2012-07-18T12:06:28.033 回答
1

如果可以大量复制密钥,std::multimap<Key, T>请使用。std::multimap<Key, T>::equal_range这对于整数等可能没问题。

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

嵌套容器更适合您的示例。如果您有不同的键,而您的谓词仅“看起来”相同,那么多重映射确实更合适。

于 2012-07-18T12:05:45.613 回答