C++ 将指针映射转换为对象映射

C++ 将指针映射转换为对象映射,c++,map,stl,lambda,C++,Map,Stl,Lambda,我有一个映射,它有指向对象的指针作为键(值是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_p

我有一个映射,它有指向对象的指针作为键(值是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));});
map m1=createMap();
地图温度;
对于每个(q.begin(),q.end(),[&temp](对p){temp.insert(make_对(*(p.first),p.second));});
我要做的是调用一个lambda,它简化了初始映射的键


然而,编译器抱怨说“/usr/include/c++/4.8/bits/stl_function.h | 235 |错误:与“operator”不匹配您必须定义operator或您的点结构是否定义“注意:映射将不“相同”:(1)生成的映射可能具有不同的顺序。(2) 生成的映射可能包含较少的元素(可能有两个指向同一点的指针)。嗯。有没有办法避免(2)种情况?。重要的是,我的算法(函数)返回第一个映射。为了测试它的输出,虽然我需要一个对象的映射(不是指针)。@Dieter相同的指针只会被分配到映射中的一个元素,不是吗?如果是这样,两个贴图将具有相同数量的元素。点(1)仍然是正确的。@DrD我的意思是:指向两个点的指针(在不同的地址),其中的点值是相同的!我忘了地图键是分类容器。C++新手。谢谢。你知道怎么做吗?