gpt4 book ai didi

c++ - 为什么 {} 用于访问 std::hash 中的 operator()?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:16 25 4
gpt4 key购买 nike

在阅读用于 std::unordered_map 的 std::hash 示例时,我注意到 {} 正在访问 operator() 函数。

http://en.cppreference.com/w/cpp/utility/hash

result_type operator()(argument_type const& s) const
{
result_type const h1 ( std::hash<std::string>{}(s.first_name) );
result_type const h2 ( std::hash<std::string>{}(s.last_name) );
return h1 ^ (h2 << 1); // or use boost::hash_combine (see Discussion)
}

这里使用 {} 代表什么?

最佳答案

std::hash<T>是类型而不是函数。

std::hash 的实例有一个 operator()进行哈希运算。

所以 std::hash<std::string>是一种哈希类型。 {}然后创建该类型的实例。 (s.first_name)电话 operator()std::hash<std::string> 上.

std::hash<std::string>{}(s.first_name);
^ ^ ^
| | call operator() on that instance
type of hasher |
create an instance of that type

关于c++ - 为什么 {} 用于访问 std::hash 中的 operator()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46201224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com