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

MTM*_*TMD 4 c++ c++11

在C++ 11中,可以获得string变量的散列值,如下所示:

std::size_t h1 = std::hash<std::string>{}("Some_String");
Run Code Online (Sandbox Code Playgroud)

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

  1. 为什么我们需要花括号呢?
  2. 是否可以使用牙箍逃脱?

Bri*_*ian 8

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

std::hash<std::string> H;
auto h1 = H("Some_String");
Run Code Online (Sandbox Code Playgroud)