为什么在无序容器的模板中可以使用函数指针或 lambda 表达式来代替哈希函数?
下面的例子在《C++ Primer 5th》的11.4中提到:
size_t hasher(const sales_data &sd)
{
return hash<string>(0)(sd.isbn());
}
bool eqOp(const sales_data &lhs,const sales_data &rhs){
return lhs.isbn() == rhs.isbn ();
}
然后创建如下的unordered_multiset
容器:
using SD_multiset = unordered_multiset<sales_data,
decltype(hasher)* , decltype(eqOp)*>; // why it can?
SD_multiset bookstore(42, hasher, eqOp);
std:hash
不是一个函数吗目的?为什么可以接受函数指针或 lambda 表达式
The following examples are mentioned in 11.4 of <<C + + primer 5th>>:
size_t hasher(const sales_data &sd)
{
return hash<string>(0)(sd.isbn());
}
bool eqOp(const sales_data &lhs,const sales_data &rhs){
return lhs.isbn() == rhs.isbn ();
}
Then create the following unordered_multiset
container:
using SD_multiset = unordered_multiset<sales_data,
decltype(hasher)* , decltype(eqOp)*>; // why it can?
SD_multiset bookstore(42, hasher, eqOp);
Isn't std:hash
a function object? Why can a function pointer or lambda expression be accepted
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论