调用向量的(默认)哈希函数

sui*_*kan 2 c++ syntax hash

我正在尝试获取不同类型对象的哈希值,如字符串和向量.

以下代码可以......

  std::string data = std::string("abc");
  std::cout << std::hash<std::string>()(data) << std::endl;
Run Code Online (Sandbox Code Playgroud)

......但不是这一个,虽然我"只是"替换字符串由类型载体类型.

  std::vector<int> data( {1,2,3} );
  std::cout << std::hash<std::vector<int> >()(data) << std::endl;
Run Code Online (Sandbox Code Playgroud)

g ++ -std = gnu + 11说:

  invalid use of incomplete type 'struct std::hash<std::vector<int> >'
Run Code Online (Sandbox Code Playgroud)

......为什么?

And*_*ndy 5

它看起来像你的编译器没有实现std::hashstd::vector.

根据MSDN,Visual Studio只为标量类型和一些字符串类型实现了这一点.根据cpluplus.com,编译器只需要为简单类型实现它,而不是所有类型.