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.)