[问题] 内建hash语法问题

楼主: cyanis (Terry)   2017-05-03 20:50:07
开发平台(Platform): (Ex: Win10, Linux, ...)
win10 / linux
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
code::blocks
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
正在看C++ Primer 5th原文书,在第11.4节unordered container中
作者有给了一个可以用自己定义的函式来作为参数初始化unordered_multiset
(在11章summary那一页前面)
作者其中一个函式是这样
size_t hasher(const Sales_data &sd)
{
return hash<string>()(sd.isbn());
}
但是我搞不太懂hash<string>()(sd.isbn())为什么中间会多出一个空括号,
用了编译器编译没有空括号会编不过,看了include档还是看的雾煞煞
烦请各位帮忙解惑<(_)>
程式码(Code):(请善用置底文网页, 记得排版)
完整简略程式码
https://ideone.com/pXOFHR
作者: loveflames (咕啾咕啾魔法阵)   2017-05-03 21:21:00
临时物件
楼主: cyanis (Terry)   2017-05-03 21:41:00
多谢楼上说明~~ 原来是临时物件, 刚刚再看了一次include档就明白了
作者: LPH66 (-6.2598534e+18f)   2017-05-04 10:01:00
正确说来是临时物件 + 呼叫它的 operator()所以才会两对括号; std::hash 是个 functor

Links booklink

Contact Us: admin [ a t ] ucptt.com