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

我想做的是找到Point1引用的所有行,例如,键std::pair<Point1, Anything>。我不在乎std::pair<Anything, Point1>

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

谢谢

最佳答案

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

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

10-08 13:19