在游戏开发中经常需要保存一些数据结构
并且在使用的时候需要快速的查找出来
Hash表正是为了提高检索速度而设计出来的
下面我就将我在用Delphi开发中使用Hash表的方法写出来
希望对大家有一定的帮助!
在Delphi中有一个THashedStringlist类使用这个类可以实现Hash表的操作使用这个类需要引用IniFiles头文件
例如我们定义的数据结构是
以下是引用片段
RTest=record
Key:Integer;
Name:String[];
Sex:Boolean;
Age:Integer;
end;
PTest=^RTest;
创建Hash表
ScHash:=THashedStringlistCreate;
将数据结构加入Hash表中
var
Index:Integer;
p_Test:PTest;
Index:=ScHashIndexOf(IntToStr(p_TestKey));
ifIndex=then
begin
ScHashAddObject(IntToStr(p_TestKey)TObject(Integer(p_Test)));
end;
在加入Hash表的时候首先我们检查看这个Key是否在Hash表中如果Index=则说明此Key不在Hash表中则我们将这个结构指针加入到Hash表中
将数据结构从Hash表中删除
以下是引用片段
var
Index:Integer;
t_Object:TObject;
Index:=ScHashIndexOf(IntToStr(p_TestKey));
ifIndex<>then
begin
t_Object:=ScHashObjects[Index];
ScHashDelete(Index);
end;
删除Hash表
在删除Hash表的时候和一般的Tlist删除一样使用Free
ScHashFree;