我正在使用 HashMap 类声明中的 typedef std::function 处理 HashMap 类。
typedef std::function<unsigned int(const std::string&)> HashFunction;
对于类的私有成员,我有 HashFunction 哈希,可以与我自己的哈希函数一起使用,也可以使用提供给构造函数的其他函数。
HashFunction hash;
unsigned int myHashFunction(const std::string&) const;
默认构造函数必须将散列设置为默认值,在我的例子中是 myHashFunction。并且以 HashFunction 作为参数的构造函数必须使用该特定函数,而不是 myHashFunction。
HashMap::HashMap()
: map(new Node*[INITIAL_BUCKET_COUNT]), mapSize(0), mapCapacity(INITIAL_BUCKET_COUNT),
hash(std::bind(&HashMap::myHashFunction, this)) // This is definitely not correct
{
initializeMap();
}
HashMap::HashMap(HashFunction hashFunction)
: map(new Node*[INITIAL_BUCKET_COUNT]), mapSize(0), mapCapacity(INITIAL_BUCKET_COUNT),
hash(hashFunction) //Is this correct?
{
initializeMap();
}
如何将 myHashFunction 或提供的散列函数绑定到散列,以便我可以在类成员函数中使用 hash(key) 来支持这两个散列函数?如果我完全弄错了,请引导我走向正确的道路。谢谢。