Existe-t-il un moyen facile de truquer un tableau multidimensionnel de taille inconnue en utilisant un tableau plat? J'ai une application où 90% des utilisations du tableau seraient plus faciles/plus rapides sans utiliser la récursivité, et une seule exigence qui doit ajouter de la profondeur au tableau. La seule façon que je peux penser qu'il serait de garder une liste courante des index de début et indices finaux, où le tableau 1D ressemblerait à ceci:Fake un tableau multidimensionnel avec un tableau plat?
[0] = 1
[1] = 2
[2] = 3
[3] = 4
[4] = 5
... et les listes de début/fin ressemblerait à ceci :
Start End
----- ---
[0] = 1 [0] = 2
[1] = 3 [1] = 4
ce qui représenterait un tableau multi-dimension qui ressemble à ceci:
[0] = 1
[1] = [0] = 2
[1] = 3
[2] = [0] = 4
[1] = 5
cela fonctionnerait avec plus de 2 dimensions, mais à ce moment-là, je vais avoir du mal à déterminer h Pour déterminer à quelle profondeur j'étais donné un index dans le tableau 1D original et les listes de début/fin. J'ai aussi du mal à trouver les termes de recherche à utiliser pour chercher ce genre de chose. Toute orientation générale/idées serait appréciée. Merci. Editer - Pour donner un peu de contexte, il s'agit de prendre en charge les transactions imbriquées dans une implémentation de modèle de commande. Le tableau 1D contient des commandes, et les profondeurs artificielles ne sont là que pour donner des noms à chaque transaction. Puisque les transactions seront utilisées avec parcimonie, il semble évident que passer rapidement par une petite liste d'ints serait plus rapide que de parcourir récursivement un tableau multidimensionnel de commandes, et vérifier à chaque index s'il y avait ou non une seule commande ou tableau de commandes à l'intérieur.
Il me semble que tout gain que vous obtiendriez en évitant la récursivité (et pourquoi auriez-vous besoin de revenir en arrière?) Va être rattrapé par la douleur de maintenir ces niveaux artificiels de «profondeur». –
Pensez-vous que la jonglerie autour de trois tableaux séparés sera plus performante que la récursivité et les tableaux multidimensionnels réels? J'espère que vous faites un benchmarking significatif avant de vous engager dans cette voie. – meagar
@Marc B & @meagar: Veuillez consulter les éditions qui donnent un peu plus de contexte. – Ocelot20