Dimension d'un tableau

[Résolu]
Signaler
Messages postés
231
Date d'inscription
lundi 27 novembre 2000
Statut
Membre
Dernière intervention
7 juillet 2008
-
Messages postés
140
Date d'inscription
dimanche 15 avril 2007
Statut
Membre
Dernière intervention
2 novembre 2009
-
je veux re-allouer de nouveau l'espace de memoire pour un tableau
(dynamiquement ) comment faire par un petit code.

Exemple : lorsque l'utilisateur tappe un nouveau entier il faut automatiquement aggrandire la taille du tableau.

9 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
int[] newTab = new int[oldTab.Length + 1];
oldTab.CopyTo(newTab, 0);

newTab[newTab.Length] = nouvelleValeur;
oldTab = newTab;

Sébastien FERRAND
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
l'équivalent tu ReDim du VB ?

donc :

int[] newTab = new int[oldTab.Length + 1];
oldTab.CopyTo(newTab, 0);

newTab[newTab.Length] = nouvelleValeur;

Sébastien FERRAND
Messages postés
231
Date d'inscription
lundi 27 novembre 2000
Statut
Membre
Dernière intervention
7 juillet 2008
3
je veux bien que le nom du tableau ne change pas ( même nom du tableau mais avec un taille plus grand ).
c'est comme la fonction Realloc en C (elle garde le même nom du tableau ainsi que les valeurs mais avec un taille plus grand)
Merci cher ami de ton aide
Messages postés
231
Date d'inscription
lundi 27 novembre 2000
Statut
Membre
Dernière intervention
7 juillet 2008
3
oldTab = newTab;
cette instruction ma echapper.
et il faut alors liberer le newTab ? (comment le faire) ou bien le garbge collecteur s' interresse !
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
euh... tu peux faire newTab = null

Sébastien FERRAND
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Si tu as besoin d'un tableau dynamique utilises un ArrayListpour te simplifier la tache, en interne un ArrayList utilise le même concept que vient d'expliquer Sébastien, à part que c'est la capacité du tableau qui est définie plutôt que la nombre réel d'éléments.
Messages postés
140
Date d'inscription
dimanche 15 avril 2007
Statut
Membre
Dernière intervention
2 novembre 2009

Woha !!

Cette classe est magique !

ArrayList c'est de la balle ! Moi qui me fait chichi à créer des tableaux de 1000 cases (pour des personnages), me voila servi

Merci Lutinore et merci 24 ans d'avoir posé cette question avant moi [auteur/LUTINORE/498040.aspx ]
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
56ka c'etait en 2005, depuis avec le .NET 2.0 on n'utilise plus la classe ArrayList mais la classe List< T > c'est une classe générique bien plus performante.

List< Personnage > list = new List< Personnage >( 10 ); // le reste s'utilise comme un ArrayList.
Messages postés
140
Date d'inscription
dimanche 15 avril 2007
Statut
Membre
Dernière intervention
2 novembre 2009

ah ok merci [auteur/LUTINORE/498040.aspx Lutinore]de l'info.

Mais par contre je suis en train de faire un plugin qui est censé être compatible avec Outlook 2000 à 2007... donc je vais garder ArrayList pour ça.

Mais sinon je vais voir avec List<T> pour mes nouveaux progs.

a+ bonne soirée