哈希函数中的花括号是什么?

时间:2018-10-19 02:53:01

标签: c++ c++11

在C ++ 11中,可以如下获取string变量的哈希值:

std::size_t h1 = std::hash<std::string>{}("Some_String");

它干净简单。但是,我有两个问题:

  1. 为什么我们在这里需要花括号?
  2. 是否可以使用牙套逃脱?

1 个答案:

答案 0 :(得分:8)

花括号用于对类型为std::hash<std::string>的对象进行值初始化。然后可以调用该对象,因为它有一个重载的operator()。或者,您可以创建一个命名对象:

std::hash<std::string> H;
auto h1 = H("Some_String");