【发布时间】:2014-05-24 03:33:48
【问题描述】:
我正在尝试获取不同类型对象的哈希值,例如字符串和向量。
下面的代码就ok了……
std::string data = std::string("abc");
std::cout << std::hash<std::string>()(data) << std::endl;
...但不是这个,虽然我“只是”用 vector 类型替换了 string 类型。
std::vector<int> data( {1,2,3} );
std::cout << std::hash<std::vector<int> >()(data) << std::endl;
g++ -std=gnu+11 说:
invalid use of incomplete type 'struct std::hash<std::vector<int> >'
...为什么?
【问题讨论】:
-
对于
std::vector<int>类型没有std::hash<>的特化。错误告诉你这一点。 有一个std::string(显然)。请参阅the documentation forstd::hash<>,了解哪些基本类型和库类型具有库提供的专业化列表。 -
感谢您对错误的含义的解释以及有用的链接。