Ich habe kürzlich gelesen, dass es möglich ist, Arrays zu haben, die nicht initialisiert werden müssen, dh, es ist möglich, sie zu verwenden, ohne Zeit aufwenden zu müssen, um jedes Mitglied auf den Standardwert zu setzen. Das heißt, Sie können das Array so verwenden, als ob es mit dem Standardwert initialisiert worden wäre, ohne es initialisieren zu müssen. (Entschuldigung, ich kann mich nicht erinnern, wo ich das gelesen habe).
Zum Beispiel, warum das überraschend sein kann:
Angenommen, Sie versuchen, einen Worst- Case zu modellieren -Hashtabelle für den(für jede Einfügung / Löschung / Suche) von Ganzzahlen im Bereich.
Sie können ein Array mit einer Größe von Bits zuweisen und einzelne Bits verwenden, um die Existenz einer Ganzzahl in der Hashtabelle darzustellen. Hinweis: Das Zuweisen von Speicher wird als -Zeit betrachtet.
Wenn Sie dieses Array überhaupt nicht initialisieren mussten, ist jetzt eine beliebige Folge von Operationen für diese Hashtabelle der ungünstigste Fall .
Tatsächlich haben Sie also eine "perfekte" Hash-Implementierung, die für eine Folge von Operationen den Raum verwendet, aber in der Zeit wird!
Normalerweise würde man erwarten, dass Ihre Laufzeit mindestens so schlecht ist wie Ihr Platzbedarf!
Hinweis: Das obige Beispiel könnte für die Implementierung einer Gruppe mit geringer Dichte oder einer Matrix mit geringer Dichte verwendet werden, daher ist es vermutlich nicht nur von theoretischem Interesse.
Die Frage ist also:
Wie ist es möglich, eine Array-ähnliche Datenstruktur zu haben, die es uns ermöglicht, den Initialisierungsschritt zu überspringen?