带有两个键的哈希映射 - 查找链接到一个键的所有元素。 C ++

时间:2010-07-29 15:37:07

标签: c++ hashtable hashmap

我有一个对象Line,其中包含2个Point类型的Point1Point2对象。我想创建一个包含行的HashMap,其键为std::pair<Point1, Point2>

我想要做的是找到Point1所引用的所有行(例如),即使用键std::pair<Point1, Anything>。我不关心std::pair<Anything, Point1>

我不知道是否可能,我希望是。

由于

2 个答案:

答案 0 :(得分:1)

听起来你真正想要的是std::multimap(或std::unordered_multimap),其中各个点作为键,行(pair<point, point>)作为关联值。或者,由于密钥保持第一个点,您可以将其作为std::multimap<point, point>来完成,以避免存储Point1两次,一次作为密钥并再次作为关联值的一部分。无论哪种方式,都可以轻松查找使用特定点的所有行。

另一种可能性(如果线的集合是合理的静态)将把你的线对象放入一个向量,按Point1排序。这(再次)允许您快速搜索包含特定点的所有行。优点是,这可以减少您需要存储的数据量(消除节点之间的指针),并且通常可以提高搜索速度。缺点是插入或删除项目相对较慢。

答案 1 :(得分:0)

肯定钥匙不是一对,它是一个Point-Pont1是具体的。这对是数据,而不是关键。