hash table(开放寻址法-二次探查实现的哈希表)
#ifndef C11LEARN_HASHQUADRATIC_H
#define C11LEARN_HASHQUADRATIC_H
#include "HashLiner.h"
template<typename T>
class HashQuadratic:public HashLiner<T>
{
public:
HashQuadratic(int c1 = 1,int c2 = 2);
protected:
int c1;
int c2;
protected:
virtual int hashing(int key,int index);
};
template<typename T>
HashQuadratic<T>::HashQuadratic(int c1, int c2):HashLiner<T>(),c1(c1),c2(c2) {}
template<typename T>
int HashQuadratic<T>::hashing(int key,int index){
return (HashQuadratic<T>::auxiliary_hashing(key)+c1*index+c2*index*index)%HashLiner<T>::capacity;
}
#endif //C11LEARN_HASHQUADRATIC_H
测试代码
HashQuadratic<string> hashQuadratic;
hashQuadratic[2] = "hello";
hashQuadratic[123456] = "world";
cout << hashQuadratic[2] << endl;
cout << hashQuadratic[123456] << endl;
HashQuadratic<string> hashQuadratic1 = hashQuadratic;
cout << hashQuadratic1[2] << endl;
cout << hashQuadratic1[123456] << endl;
HashQuadratic<string> hashQuadratic2;
hashQuadratic2 = hashQuadratic;
cout << hashQuadratic2[2] << endl;
cout << hashQuadratic2[123456] << endl;