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

时间:2014-03-28 14:27:09

标签: 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_pair(*(p.first),p.second));});

我想要做的就是调用一个简单地对初始地图的键进行解密的lambda。

然而,编译器抱怨&#34; / usr / include / c ++ / 4.8 / bits / stl_function.h | 235 |错误:'operator&lt;'不匹配(操作数类型是'const Point'和'const Point “)|&#34;

我在某个地方犯了一个愚蠢的错误吗?

1 个答案:

答案 0 :(得分:0)

您必须为您的类Point定义运算符&lt;

地图是有序的元素集合。因此,您需要实现一个函数来对它们进行排序。默认情况下,该函数是运算符&lt; ,但如果需要,可以在构造函数中指定其他函数。

这里,例如:

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