-
概述什么的等我有空再补。
-
用的时候直接开一个
myhash a
,然后像普通的unordered_map
一样a[x]
就可以了(&[]
重定义的功劳)。
struct myhash{
struct data{
ull key;
int val,nex;
data(){}
data(ull _key,int _val,int _nex){key=_key,val=_val,nex=_nex;}//hs[key]=val
}cnt[lim<<1];
int hd[lim<<1],siz;//链式前向星存储 siz为总点数(链表上的)
int hash(ull x){return x%lim;}
int &operator[](ull key){
int id=hash(key);//模后是哪一个链表
for(int i=hd[id];i;i=cnt[i].nex)
if(cnt[i].key==key)
return cnt[i].val;
return cnt[++siz]=data(key,0,hd[id]),hd[id]=siz,cnt[siz].val;
}
myhash(){
siz=0;
memset(hd,0,sizeof(hd));
}
};
标签:哈希,val,int,struct,key,data,nex
From: https://www.cnblogs.com/weixin2024/p/17069635.html