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

时间:2014-05-23 19:15:22

标签: c++ hash syntax

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

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

  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> >'

......为什么?

1 个答案:

答案 0 :(得分:5)

看起来你的编译器没有为std::hash实现std::vector

根据MSDN,Visual Studio仅为标量类型和一些字符串类型实现此功能。根据{{​​3}},编译器只需要为简单类型而不是所有类型实现它。