Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#10

AW: TDictionary mit zusammengesetzem Schlüssel

  Alt 20. Jun 2015, 09:19
Na so (A XOR B) mod 23 könnte schon ausreichen, als Hash in einem Dictionary.
Ist aber aufwändiger zu programmieren als eine schnöde Liste mit linearer Suche.
Delphi-Quellcode:
Type
  TTwoBigIntList<T> = class
    fDict : TDictionary<Int64,T>;
  public
    constructor Create;
    property Item[Key1, Key2 : Int64] : T Read GetItem;
    ...
  end;

...
Function TTwoBigIntList<T>.GetItem(Key1, Key2 : Int64) : T;
begin
  return FDict.Get(Key1 xor Key2); // ist natürlich nicht eindeutig... ;-(
end;
Würde ich jetzt nicht sagen. Hinter der Klasse kann man eben auch den Vorschlag von Stevie implementieren (dann muss man aber noch den equal-Operator implementieren ), oder eine lineare Suche (aufwändiger) oder eine binäre Suche (noch aufwändiger) oder einen Baum (noch viel Aufwändiger) oder eine Skiplist (noch viel viel Aufwändiger) oder ach was weiss ich denn verbergen.

Wobei: In der Klasse würde ich überhaupt kein Verhalten implementieren, sondern eine vorgefertigte Struktur verwenden, die der Aufgabenstellung angemessen erscheint (lookup, sort, insert etc.)
  Mit Zitat antworten Zitat