std::multimap
如果键和它的值是相同的类型,a有什么意义吗?
真正的代码要复杂得多,但例如,我有一个类Point
,我想找到该类型的类似对象:
bool
ComparePoints::operator()(Point* const p1, Point* const p2) const {
if (p1->x > p2->x) return false;
if (p1->x < p2->x) return true;
...
return false;
}
为此,我可以使用std::multimap
with 比较函数,然后使用 MultiMap::equal_range 获取一组对象。
std::multimap<Point*, Point*, ComparePoints> pointsMap;
这对我来说很好,但我觉得值字段变得多余了。我需要寻求更好的解决方案吗?
编辑:
我正在从一个对象映射到完全相同的对象
pointsMap.insert(std::pair<Point*, Point*>(p, p));
使值变得多余,所以我可能应该使用 std::multiset 来代替@john 提到的。