私は最近、初期化する必要のない配列を持つことができる、つまり、各メンバーをデフォルト値に設定しようとする時間を費やすことなく使用できることを読みました。つまり、初期化せずにデフォルト値で初期化されたかのように配列の使用を開始できます。(申し訳ありませんが、これをどこで読んだか覚えていません)。
たとえば、なぜそれが驚くべきことなのかについて:
範囲の整数の最悪のケースハッシュテーブル(各挿入/削除/検索用)をモデル化しようとしているとします 。
サイズビットの配列を割り当て、個々のビットを使用してハッシュテーブル内の整数の存在を表すことができます。注:メモリの割り当てはO(1 )時間と見なされます。
これで、この配列をまったく初期化する必要がなかった場合、このハッシュテーブルでの操作のシーケンスは、最悪の場合O(n )になります。
したがって、実際には、「完全な」ハッシュ実装があります。これは、操作に対して Θ (n 2)スペースを使用しますが、O(n )時間で実行されます。
通常、ランタイムは少なくともスペース使用量と同じくらい悪いことが予想されます!
注:上記の例は、スパースセットまたはスパースマトリックスの実装に使用される可能性があるため、理論的に興味深いだけではありません。
質問は次のとおりです。
初期化ステップをスキップできるデータ構造のような配列を持つことはどのように可能ですか?