我有一个对象Line
,其中包含2个Point
类型的Point1
和Point2
对象。我想创建一个包含行的HashMap,其键为std::pair<Point1, Point2>
。
我想要做的是找到Point1
所引用的所有行(例如),即使用键std::pair<Point1, Anything>
。我不关心std::pair<Anything, Point1>
。
我不知道是否可能,我希望是。
由于
答案 0 :(得分:1)
听起来你真正想要的是std::multimap
(或std::unordered_multimap
),其中各个点作为键,行(pair<point, point>
)作为关联值。或者,由于密钥保持第一个点,您可以将其作为std::multimap<point, point>
来完成,以避免存储Point1两次,一次作为密钥并再次作为关联值的一部分。无论哪种方式,都可以轻松查找使用特定点的所有行。
另一种可能性(如果线的集合是合理的静态)将把你的线对象放入一个向量,按Point1排序。这(再次)允许您快速搜索包含特定点的所有行。优点是,这可以减少您需要存储的数据量(消除节点之间的指针),并且通常可以提高搜索速度。缺点是插入或删除项目相对较慢。
答案 1 :(得分:0)
肯定钥匙不是一对,它是一个Point-Pont1是具体的。这对是数据,而不是关键。