本文介绍了为什么使用{}来访问std :: hash中的operator()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在阅读用于std :: unordered_map的std :: hash的示例时,我注意到{}正在访问operator()函数.
While reading the examples of std::hash used for std::unordered_map, I noticed that the operator() function was being accessed by {}.
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)
}
这里{}的使用代表什么?
What does the use of {} here represent?
推荐答案
std::hash<T>
是类型而不是函数.
std::hash
的实例具有一个执行哈希的operator()
.
An instance of std::hash
has an operator()
that does the hash.
所以std::hash<std::string>
是哈希类型. {}
然后创建该类型的实例. (s.first_name)
在std::hash<std::string>
上调用operator()
.
So std::hash<std::string>
is a hashing type. {}
then creates an instance of that type. (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
这篇关于为什么使用{}来访问std :: hash中的operator()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!