Einzelnen Beitrag anzeigen

Arakis

Registriert seit: 29. Aug 2002
30 Beiträge
 
#1

HashTable auf Integer-Basis

  Alt 30. Mär 2005, 14:07
Hallo,
Ich benötige Key-Value-Collection, auf die ich per Key zugreifen kann. Der Key soll ein Integer sein und das Value ein Pointer. Ich habe da die TBucketList gefunden, doch die nimmt als Key nur einen Pointer. Das ist aus zwei Gründen dämlich:

- Ich müsste für einen Integer erst den Pointer suchen - doch der hat auf jeden Fall eine andere Adresse da andere Variabel
- In einer Funktion deklarerte Werte-Variabeln werden nach Funktionsende Freigegeben.

Also ich bräuchte in etwa sowas:

Delphi-Quellcode:
var
  List: TIntegerHashTable;

procedure func1;
Begin
  List:=TIntegerHashTable.Create;
  List.Add(4643, <Pointer of irgendwas>)
End;

procedure func2;
var
  p: Pointer;
Begin
  p := List.Item[4643];
  {...}
End;
Wo gibt es so etwas?

Ansonsten müsste ich mir eine "SortedList" wie in .NET machen, aber da ich nicht Jahre mit Algorimtmen verbringen möchte, verwende ich dann einfach eine selber gemachte TIntegerList als Key-Liste und eine TList als Pointer-Liste, dann noch etwas QuickSort und eine Priese Binary-Search Nur weiß ich nicht ob das von der Geschwindigkeit akzeptabel ist. Denn die Liste wird bis zu 100.000 Integer-Werte haben, die rasand schnell abgefragt werden müssen.
  Mit Zitat antworten Zitat