Di recente ho letto che è possibile disporre di array che non devono essere inizializzati, ovvero è possibile utilizzarli senza dover perdere tempo a cercare di impostare ciascun membro sul valore predefinito. cioè è possibile iniziare a usare l'array come se fosse stato inizializzato dal valore predefinito senza inizializzarlo. (Mi dispiace, non ricordo dove ho letto questo).
Ad esempio, perché questo può essere sorprendente:
Supponiamo che tu stia cercando di modellare il caso peggiore hashtable (per ciascuno di insert / delete / search) di numeri interi nell'intervallo .
È possibile allocare un array di dimensioni bit e utilizzare singoli bit per rappresentare l'esistenza di un numero intero nella tabella hash. Nota: l'allocazione della memoria è considerata il tempo .
Ora, se non è necessario inizializzare affatto questo array, qualsiasi sequenza di operazioni su questa hashtable è ora il caso peggiore .
Quindi, in effetti, hai un'implementazione hash "perfetta", che per una sequenza di operazioni utilizza lo spazio , ma viene eseguita in time!
Normalmente ci si aspetterebbe che il tempo di esecuzione sia almeno pari a quello dell'uso dello spazio!
Nota: l'esempio sopra potrebbe essere usato per un'implementazione di un set sparse o di una matrice sparse, quindi suppongo non sia solo di interesse teorico.
Quindi la domanda è:
Come è possibile avere una matrice come la struttura dei dati che ci consente di saltare il passaggio di inizializzazione?