指向矢量的unordered_map

时间:2013-11-07 20:35:33

标签: c++11 g++

我有一些自定义类:LocationInfo(有关位置的信息)和Coordinates(指定X& Y网格位置的两个整数)。我正在使用unordered_map将Coordinates对象键入LocationInfo对象的向量:

typedef std::vector<LocationInfo> LocationVector;
...
std::unordered_map<Coordinates, LocationVector> data;
// I also tried:
// std::unordered_map<Coordinates, std::vector<LocationInfo> > data;

链接后,我收到一个非常长的错误(实际上是两个),结尾为:

 undefined reference to `std::hash<Coordinates>::operator()(Coordinates) const'

我在Ubuntu 11.10上使用带有-std = c ++ 0x选项的g ++ 4.6.1。在阅读了这里的一些帖子后,我原本以为可能存在一个问题,要求我在声明中的一个类型之前明确使用typename。但是,当使用混淆编译器的模板时,我才发现需要这样做。我添加了一些以防万一,这只会让事情变得更糟。

1 个答案:

答案 0 :(得分:0)

您必须为您的类型实现自定义哈希函子。

在这里unordered_map hash function c++看看如何做到这一点。