22.01.19总结

今天新学了一下哈希,那些奇奇怪怪的理论就不说了(其实没看懂),只讲讲取余操作

说是哈希表,实际上感觉就是一种对数据进行取余处理后存入数组的操作

和map甚至普通int数组没什么大区别

优点:1.下标查找

2.指针增删改查

入门链接

字符串哈希

简而言之将一个字符串按一个哈希函数转成数字(一般是ASCII码值)

当然,结果取余一下更好

这里的p一定要是个质数,不然容易造成哈希冲突。

一种新的宏定义方式(有类型检查、节省空间)

const int MOD= 2333;

下面是计算哈希值代码

下面是一个hash函数,不过很奇怪,CSDN上面找不到这个函数的讲解,资料很少

#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;


}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值