[問題] 內建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