【问题标题】:unordered_map pointing to vectorunordered_map 指向向量
【发布时间】:2013-11-19 16:49:23
【问题描述】:

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

【问题讨论】:

  • 您需要专门针对您的密钥类型 std::hash 或提供自定义哈希函子。

标签: c++11 g++


【解决方案1】:

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

看这里unordered_map hash function c++ 看看它是如何做到的。

【讨论】:

    猜你喜欢
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 2013-07-19
    • 2011-08-04
    • 2013-10-10
    • 1970-01-01
    相关资源
    最近更新 更多