J'ai récemment lu qu'il est possible d'avoir des tableaux qui n'ont pas besoin d'être initialisés, c'est-à-dire qu'il est possible de les utiliser sans avoir à passer du temps à essayer de définir chaque membre à la valeur par défaut. c'est-à-dire que vous pouvez commencer à utiliser le tableau comme s'il avait été initialisé par la valeur par défaut sans avoir à l'initialiser. (Désolé, je ne me souviens pas où j'ai lu ceci).
Par exemple, pourquoi cela peut être surprenant:
Dites que vous essayez de modéliser un pire cas Hashtable (pour chacun d' insertion / suppression / recherche) des entiers dans l'intervalle .[ 1 , n 2 ]
Vous pouvez allouer un tableau de taille bits et utiliser des bits individuels pour représenter l'existence d'un entier dans la table de hachage. Remarque: l'allocation de mémoire est considérée comme du temps .O ( 1 )
Maintenant, si vous n'aviez pas du tout à initialiser ce tableau, toute séquence d' opérations dites sur cette table de hachage est maintenant le pire des cas .O ( n )
Donc en fait, vous avez une implémentation de hachage "parfaite", qui pour une séquence de opérations utilise l' espace , mais s'exécute en temps !Θ ( n 2 ) O ( n )
Normalement, on s'attendrait à ce que votre temps d'exécution soit au moins aussi mauvais que votre utilisation de l'espace!
Remarque: L'exemple ci-dessus peut être utilisé pour une implémentation d'un ensemble clairsemé ou d'une matrice clairsemée, donc ce n'est pas seulement d'intérêt théorique, je suppose.
La question est donc:
Comment est-il possible d'avoir une structure de données de type tableau qui nous permet de sauter l'étape d'initialisation?