C++11 指向向量的无序_映射

C++11 指向向量的无序_映射,c++11,g++,C++11,G++,我有一些自定义类:LocationInfo(关于位置的信息)和坐标(指定X&Y网格位置的两个整数)。我正在使用无序的_贴图将坐标对象设置为LocationInfo对象向量的关键帧: typedef std::vector<LocationInfo> LocationVector; ... std::unordered_map<Coordinates, LocationVector> data; // I also tried: // std::unordered_map&

我有一些自定义类:LocationInfo(关于位置的信息)和坐标(指定X&Y网格位置的两个整数)。我正在使用无序的_贴图将坐标对象设置为LocationInfo对象向量的关键帧:

typedef std::vector<LocationInfo> LocationVector;
...
std::unordered_map<Coordinates, LocationVector> data;
// I also tried:
// std::unordered_map<Coordinates, std::vector<LocationInfo> > data;
typedef std::vector LocationVector;
...
std::无序的地图数据;
//我还尝试:
//std::无序的地图数据;
在链接时,我得到了一个很长的错误(实际上是两个),它以:

 undefined reference to `std::hash<Coordinates>::operator()(Coordinates) const'
对'std::hash::operator()(坐标)const'的未定义引用

我在Ubuntu11.10上使用带有-std=c++0x选项的g++4.6.1。在阅读了这里的一些帖子之后,我最初认为可能有一个问题需要我在声明中的某个类型之前显式使用typename。但我只看到在使用使编译器感到困惑的模板时需要这样做。为了以防万一,我添加了一些,这只会让事情变得更糟。

您必须为您的类型实现一个自定义哈希函数


看看这里,看看如何做到这一点。

您需要为您的密钥类型专门化
std::hash
,或者提供一个自定义hash functor。