在阅读用于 std::unordered_map 的 std::hash 示例时,我注意到 operator() 函数正在由 {} 访问。
http://en.cppreference.com/w/cpp/utility/hash 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
has an operator()
这就是哈希值。
So std::hash<std::string>
是一种哈希类型。{}
然后创建该类型的实例。(s.first_name)
calls operator()
on a 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)