今天新学了一下哈希,那些奇奇怪怪的理论就不说了(其实没看懂),只讲讲取余操作
说是哈希表,实际上感觉就是一种对数据进行取余处理后存入数组的操作
和map甚至普通int数组没什么大区别
优点:1.下标查找
2.指针增删改查
字符串哈希
简而言之将一个字符串按一个哈希函数转成数字(一般是ASCII码值)
当然,结果取余一下更好
这里的p一定要是个质数,不然容易造成哈希冲突。
一种新的宏定义方式(有类型检查、节省空间)
const int MOD= 2333;
下面是计算哈希值代码
下面是一个hash函数,不过很奇怪,优快云上面找不到这个函数的讲解,资料很少
#include <iostream>
#include <string>
using namespace std;
const int MOD=2333;
string temp;
int main(){
// 通过 hash 函数计算出 hash 值
cout << hash<char>()('a')%MOD << endl;
cout << hash<string>()("a")%MOD << endl;
cout << hash<string>()("abc")%MOD << endl;
cin>>temp;
cout << hash<string>()(temp)%MOD << endl;
}