在游戲開發中經常需要保存一些數據結構,並且在使用的時候需要快速的查找出來.Hash表正是為了提高檢索速度而設計出來的.下面我就將我在用Delphi開發中使用Hash表的方法寫出來,希望對大家有一定的幫助!
在Delphi中有一個THashedStringlist類,使用這個類可以實現Hash表的操作.使用這個類需要引用IniFiles頭文件.
例如:我們定義的數據結構是:
以下是引用片段:
RTest=record
Key:Integer;
Name:String[20];
Sex:Boolean;
Age:Integer;
end;
PTest=^RTest;
1:創建Hash表.
ScHash:=THashedStringlist.Create;
2:將數據結構加入Hash表中.
var
Index:Integer;
p_Test:PTest;
Index:=ScHash.IndexOf(IntToStr(p_Test.Key));
ifIndex=-1then
begin
ScHash.AddObject(IntToStr(p_Test.Key),TObject(Integer(p_Test)));
end;
在加入Hash表的時候,首先我們檢查看這個Key是否在Hash表中,如果Index=-1則說明此Key不在Hash表中,則我們將這個結構指針加入到Hash表中.
3:將數據結構從Hash表中刪除.
以下是引用片段:
var
Index:Integer;
t_Object:TObject;
Index:=ScHash.IndexOf(IntToStr(p_Test.Key));
ifIndex<>-1then
begin
t_Object:=ScHash.Objects[Index];
ScHash.Delete(Index);
end;
4:刪除Hash表
在刪除Hash表的時候和一般的Tlist刪除一樣,使用Free.
ScHash.Free;