看板 EE_DSnP 關於我們 聯絡資訊
我想請問一下有關 HashKey的constructor 和size_t operator() () const; 的問題... HashKey照名字來說 要造出一個hash用的key 而這個key應該要和要丟到hash的data有關,所以必須有地方input data才行 我原本想法是寫在constructor裡面 HashKey(AIGgate data) {num = f(data)}; f()是我的hash function num 是造出來的key number 但老師預設的Hash class中,寫了: size_t bucketNum(const HashKey& k) const { return (k() % _numBuckets); } 所以這個bucketNum 要把一個key丟進去,然後用operator () 造出一個 number 所以這個operator的目的比較像是:再將key轉換成可以用的數字,用來數地幾個bucket (因為key可能還不是數字?) 在此operator ()感覺上 比較不像個function的用法 因為function感覺上就是要 a = f(b)比較像個function吧 --- 簡單說我的結論是 我真正的轉換function 用data生出key,應該要自己寫一個 f() 而operator () 是拿來真正把key變成第幾個bucket的數字用 --- 但投影片上又寫說 size_t operator() () const; // acted as “hash function” 跟我想像的還是有點衝突 所以應該是怎麼樣才對呢?? --- PS: 另外,感覺上這次hash function的限制特別多 我一定要把它所有功能都做完嗎?? 還是我可以任意刪減或增加function 只要達到strash的目的就好呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.168.228.236 ※ 編輯: BBSealion 來自: 218.168.228.236 (01/05 01:21) ※ 編輯: BBSealion 來自: 218.168.228.236 (01/05 01:23)