1

我有一些自定义类: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。但是我只在使用混淆编译器的模板时才看到需要这样做。我添加了一些以防万一,这只会让事情变得更糟。

4

1 回答 1

0

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

在这里查看unordered_map 哈希函数 c++以了解它是如何完成的。

于 2014-04-04T13:48:02.037 回答