我正在尝试获取不同类型对象的哈希值,如字符串和向量。
以下代码可以......
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> >'
......为什么?
答案 0 :(得分:5)
看起来你的编译器没有为std::hash
实现std::vector
。
根据MSDN,Visual Studio仅为标量类型和一些字符串类型实现此功能。根据{{3}},编译器只需要为简单类型而不是所有类型实现它。