gpt4 book ai didi

c++ - 具有相同类型的键和值的多重映射是否有意义?

转载 作者:行者123 更新时间:2023-11-30 04:13:56 25 4
gpt4 key购买 nike

如果键和值的类型相同,std::multimap 是否有意义?

实际代码要复杂得多,但例如,我有一个类 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,然后使用 MultiMap::equal_range 获取一组对象。

std::multimap<Point*, Point*, ComparePoints> pointsMap;

这对我来说很好,但我觉得值字段已经变得多余了。我需要寻求更好的解决方案吗?

已编辑:

我正在从一个对象映射到完全相同的对象

pointsMap.insert(std::pair<Point*, Point*>(p, p));

使值变得多余,所以我可能应该使用 std::multiset 而不是 @john 提到的。

最佳答案

这是有道理的。

例如,我想交叉引用某个城市中与我拥有的餐馆一定距离内的所有餐馆。此数据结构中的数据类型将相同,但是,实体的分组在我的业务逻辑和标准中很重要。

当您使用散列数据类型时,您实质上是通过公共(public)键对对象进行分组。 key 是否为同一类型并不重要。说“我想通过这个引用点对所有点进行分组”是对该数据类型的合法使用。

关于c++ - 具有相同类型的键和值的多重映射是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19159753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com