作者ric2k1 (Ric)
看板EE_DSnP
標題Re: [請益] 關於hash
時間Sat Jan 15 01:05:53 2011
※ 引述《nnthome (nnthome)》之銘言:
: 不好意思想請教一下大家關於hash的問題
: 在老師提供的myHash中,class Hash主要是提供一個Hash二維的架構
: 來存pair <class HashKey , class Hashdata>
: 但我不太明白class HashKey和class Hashdata是要定義些什麼,或是要包什麼東西
: 就我的理解Hashdata應該就是指AigGate,那HashKey呢?
: HashKey的member也是AigGate嗎?因為要overload () ==
: 應該也要用到AigGate的資訊吧?
: 這幾個class用意搞不太清楚,想請教一下,謝謝
說明一下我的 hash 的 template arguments, 不想被雷的可以按左鍵離開...
用在 strash 的 hash ---
Hash<StrashKey, CirGateV> FECHash;
class StrashKey
{
public:
// For the ease of comparison, I always make sure in0 < in1 here...
StrashKey(size_t in0, size_t in1) { ... }
// Must overload operator() in order to return the Hash Key
size_t operator() () const { // return a size_t based on _in0 and _in1; }
// Must overload operator == to compare the equivalence of Hash Key
bool operator == (const StrashKey& k) const {
return (_in0 == k._in0) && (_in1 == k._in1); }
private:
size_t _in0; // CirGateV::_gateV for first fanin (see below)
size_t _in1; // CirGateV::_gateV for second fanin
};
class CirGateV
{
public:
// define some utilities functions for the ease of use
private:
size_t _gateV; // Gate pointer value + isInv()
};
template <class HashKey, class HashData>
class Hash
{
typedef pair<HashKey, HashData> HashNode;
public:
...
// check if k is in the hash...
// if yes, update n and return true;
// else return false;
bool check(const HashKey& k, HashData& n) const {
size_t b = bucketNum(k);
for (size_t i = 0, bn = _buckets[b].size(); i < bn; ++i)
if (_buckets[b][i].first == k) {
....
}
...
}
private:
// Do not add any extra data member
size_t _numBuckets;
vector<HashNode>* _buckets;
size_t bucketNum(const HashKey& k) const {
return (k() % _numBuckets); } // 大放送啦!!
};
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.36.54.188
※ 編輯: ric2k1 來自: 114.36.54.188 (01/15 01:06)
1F:推 michael0728n:阿~~~還是忍不住被雷了XD 01/15 01:08
2F:→ michael0728n:是說攻略還會出嗎(歪頭 感覺現在出有點救不了人XDDDD 01/15 01:09
3F:→ ric2k1:啊,的確,我也不知道該寫甚麼攻略... circuit parsing 01/15 01:49
4F:→ ric2k1:感覺就是硬做... strash 的重點是要為用 hash 以及 circuit 01/15 01:50
5F:→ ric2k1:simplification... 至於 simulation or fraig, 我怕寫太多 01/15 01:50
6F:→ ric2k1:會影響到普羅大眾的心情... 大家有問題盡量問吧! 01/15 01:51
7F:→ ric2k1: 會用 hash 01/15 01:52
8F:推 nnthome:CirGateV就是HashData? 01/15 08:17
9F:→ ric2k1:是啊! 請記得 HashKey, HashData 是 template arguments, 01/15 10:21
10F:→ ric2k1:在使用時可以是任何的 class name. 01/15 10:22
11F:→ ric2k1:它的意義是用 HashKey 來索引之後得到的 data 01/15 10:25