我想請問一下有關
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)