[問題] 內建hash語法問題

看板C_and_CPP作者 (Terry)時間7年前 (2017/05/03 20:50), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串1/1
開發平台(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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.253.201 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1493815811.A.804.html

05/03 21:21, , 1F
臨時物件
05/03 21:21, 1F

05/03 21:41, , 2F
多謝樓上說明~~ 原來是臨時物件, 剛剛再看了一次include
05/03 21:41, 2F

05/03 21:41, , 3F
檔就明白了
05/03 21:41, 3F

05/04 10:01, , 4F
正確說來是臨時物件 + 呼叫它的 operator()
05/04 10:01, 4F

05/04 10:02, , 5F
所以才會兩對括號; std::hash 是個 functor
05/04 10:02, 5F
文章代碼(AID): #1P2T83W4 (C_and_CPP)