我想通過模板在C++中實現HashTable。 下面是簽名:如何在C++中實現泛型哈希函數
template<class T1, class T2>
class HashTable {
public:
void add(T1 a, T2 b);
void hashFunction(T1 key, T2 value)
{
// how to implement this function using key as a generic
// we need to know the object type of key
}
};
所以,我無法與執行涉及通用鍵向前移動。
在Java中,我可以很容易地將鍵轉換爲字符串,然後很高興將鍵的哈希實現爲字符串。但是,在C++中,我所知道的是有一個RTTI的概念,它可以動態地將對象轉換爲所需的對象。
如何實現動態轉換,如果此方法正確呢?
如果使用模板不是這種情況下實現泛型的正確方法,那麼請建議一些更好的方法。
就強制約束'T1'有「可哈」。即一個給你散列鍵的方法必須存在。 – millimoose 2013-04-26 19:23:39
(Java解決這個問題的方法是讓所有對象都可排序) – millimoose 2013-04-26 19:23:56
你知道C++ 11中有['std :: unordered_set'](http://en.cppreference.com/w/cpp/container/unordered_set) ?它是標準庫中的一個哈希表。 – dyp 2013-04-26 19:28:07