哈希表

  • 概述什么的等我有空再补。

  • 用的时候直接开一个 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));
	}
};
posted @ 2023-01-28 08:52  未欣  阅读(6)  评论(0编辑  收藏  举报