Bonjour, je précise que je débute en delphi et delphi .net. Initialement, j'ai commencé mon projet en delphi Win32. Or, j'ai besoin de nombreuses collections et celles de la VCL ou la DCL ne me sont pas suffisantes. Qui plus est, originaire du monde "java et c++", j'ai plus de faciliter à appréhender le template de .net pour Delphi que celui Win32.
Voici le soucis auquel je suis confronté:
je cherche une structure de données me permettant d'insérer une portion d'une collection dans ma collection. Pour l'instant j'utilise des List générique (List<t>). Y a-t-il une structure de données plus adaptée à ma problématique sachant que finalement c'est la seule opération qui me manque. Sinon, avez-vous une idée pour l'implémenter de manière efficiente (rapide et sans consommer plus de mémoire que nécessaire).
Grosso modo, je pensais faire l'opération suivante (en pseudo code)
Bon voilà c'est censé marcher sauf que:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 procedure InsertRange( List C , position : integer, first: integer, last : integer) Collection CopieC = C.Clone; // J'enlève les éléments de la collection C compris entre last et C.Count CopieC .RemoveRange (last+1 , CopieC.Count // J'enlève les éléments de la collection C compris entre 0 et first CopieC .RemoveRange ( 0 , first-1); // J'insère ensuite la collection "vidée" des éléments de C que je ne veux pas //insérer dans ma List InsertRange( position, CopieC)
1: ça gaspille de la mémoire inutilement (et vu la taille des listes que je manipule c'est impensable)
2: La création de la collection "vidées" des éléments que je ne veux pas insérer dans ma liste est couteuse en temps et c'est inutile.
Du coup cette solution intuitive me semble de piète qualité. Sauf que, ne maitrisant pas bien le template du langage Delphi.net, je ne voit pas trop la direction à suivre.
Quelques indications seraient donc les bienvenues.
Cordialement,
Partager