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

6

在 C++11 中,可以通过如下方式获得一个 string 变量的哈希值:

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

这段代码看起来干净而简单。但我有两个问题:

  1. 为什么我们需要在这里使用花括号?
  2. 是否可能在大括号内进行转义?

请注意,std::hash实例是_类型_,而不是函数。例如,这允许在std命名空间中为用户定义的类型专门化std::hash,而在C++20中将不再允许为_模板函数_进行此操作。 - Daniel Langr
1个回答

10
花括号用于对类型为std::hash<std::string>的对象进行值初始化。由于该对象具有重载的operator(),因此可以调用它。或者,您可以创建一个命名对象:
std::hash<std::string> H;
auto h1 = H("Some_String");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接