作者BBSealion (海狮)
看板EE_DSnP
标题[问题] HASH CLASS的问题
时间Wed Jan 5 01:18:50 2011
我想请问一下有关
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)