将指针的映射转换为对象的映射

Converting a map of pointers to map of of objects

本文关键字:映射 对象 转换 指针      更新时间:2023-10-16

我有一个映射,其中有指向对象的指针作为键(值是int)。鉴于此,我想创建一个与原始映射相同的映射,但我希望键是相应的对象(也称为解引用键)

下面是我的代码:
map<const Point*, int> m1 = createMap();
map<Point,int> temp;
for_each(q.begin(), q.end(), [&temp](pair<const Point*, int> p){temp.insert(make_pair(*(p.first),p.second));});

我想做的是调用一个lambda,它只是对初始映射的键进行解引用。

编译器报错"/usr/include/c++/4.8/bits/stl_function.h|235|error: no match for ' operator<'(操作数类型为' const Point '和' const Point ')|"

我是不是犯了一个愚蠢的错误?

您必须为您的类Point定义操作符<</em>

map是元素的有序集合。因此,您需要实现一个函数来对它们排序。默认情况下,该函数是operator<</em>,但如果需要,可以在构造函数中指定不同的函数。

在这里,例如:

http://www.cplusplus.com/reference/map/map/