数据处理中数据匹配常用到Qmap和QHash。
QHash查找速度上显著于QMap
QHash以任意的方式进行存储,而QMap则是以key顺序进行存储。
散列表的实现常叫做散列(hashing),以常数平均时间插入、删除、查找。
散列原理:当输入一个关键字后,根据散列函数将其散列到表中一个位置,当位置冲突时,在该位置形成一个链表(分离链接法);
散列实现:关键字%表的大小;
注意事项:表的大小一般应为素数,才能保证关键字尽量分散。(prime number:m不能被2 ~ √m 整除)
当关键字是数字时,直接与表的容量求余即可;
当关键字为字符串时,将其ASCII码值求和再与表的容量求余。但当表容量很大,而关键字很小时,就不能表尽其用。
一种可行的hashing实现方法如下:
int hash (const char *key , int tableSize) { unsigned int hashVal = 0; while(*key != '