哈希表(Hash tabel,也叫散列表),是根据关键字值(key)直接进行访问的数据结构,它通过把关键字值映射到表中一个位置(数组下标)来直接访问,以加快查找关键字值的速度。这个映射函数叫做哈希(散列)函数,存放记录的数组叫做哈希(散列)表。
给定表M,存放函数(key),对任意的关键字值key,代入函数后若能得到包含该关键字的表中地址,称表M为哈希(Hash)表,函数f(key)为哈希(Hash)函数。
最简单的哈希-字符哈希:
#include <stdio.h>
#include<string>
int main()
{
std::string str = "abcdefghijklmnopqrstuvwxyzabdxes";
int char_map[128] = {0};
for (int i = 0; i < str.length(); i++)
{
char_map[str[i]]++;
}
for (int i = 0; i < 128; i++)
{
if (char_map[i]>0)
{
printf("[%c][%d]: %d\n", i,i, char_map[i]);
}
}
}
运行结果为
[b][98]: 2
[c][99]: 1
[d][100]: 2
[e][101]: 2
[f][102]: 1
[g][103]: 1
[h][104]: 1
[i][105]: 1
[j][106]: 1
[k][107]: 1
[l][108]: 1
[m][109]: 1
[n][110]: 1
[o][111]: 1
[p][112]: 1
[q][113]: 1
[r][114]: 1
[s][115]: 2
[t][116]: 1
[u][117]: 1
[v][118]: 1
[w][119]: 1
[x][120]: 2
[y][121]: 1
[z][122]: 1