我有一个对象Line
,其中包含2个类型为Point
和Point1
的Point2
类型的对象。我想创建一个包含行且键为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排序。此(再次)使您可以快速搜索包含特定点的所有线。这样做的好处是可以减少您需要存储的数据量(消除节点之间的指针),并通常提高搜索速度。缺点是插入或删除项目相对较慢。