Redimensionner un tableau dynamique

cs_BenHur Messages postés 3 Date d'inscription dimanche 17 mars 2002 Statut Membre Dernière intervention 24 mars 2002 - 18 mars 2002 à 00:11
ADPro22 Messages postés 126 Date d'inscription mercredi 18 juillet 2001 Statut Membre Dernière intervention 27 octobre 2004 - 24 mars 2002 à 00:27
Bonjour, j'aimerais savoir s'il existe une fonction en C++ pour redimensionner un tableau dynamiquement. Au même titre que REDIM en VB. Merci

3 réponses

cs_bidules Messages postés 48 Date d'inscription samedi 31 mars 2001 Statut Membre Dernière intervention 11 avril 2004
18 mars 2002 à 20:44
Je ne sais pas s'il existe une tel fonction en c++
j'ai deja entendu parler de realloc et de malloc mais je nesais pas comment ca marche
Sinon tu peux contourner le probleme:
int *tab;
tab = new int[10];

//tes instructions et notament l'initialisation du tableau et les affectation

//dq tu veux redimenssioner
int *tmp;
tmp=tab;
tab = new int [nouvelle valeur];
for(int i = 0;i<10;i++)
{
tab[i]=tmp[i];
}
delete[] tmp;
0
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
18 mars 2002 à 21:56
-------------------------------
Réponse au message : Attention malloc free sont des fonctions C tandis que new et delete c'est du C++
-------------------------------

Je ne sais pas s'il existe une tel fonction en c++
j'ai deja entendu parler de realloc et de malloc mais je nesais pas comment ca marche
Sinon tu peux contourner le probleme:
int *tab;
tab = new int[10];

//tes instructions et notament l'initialisation du tableau et les affectation

//dq tu veux redimenssioner
int *tmp;
tmp=tab;
tab = new int [nouvelle valeur];
for(int i = 0;i<10;i++)
{
tab[i]=tmp[i];
}
delete[] tmp;

-------------------------------
Réponse au message :
-------------------------------

Bonjour, j'aimerais savoir s'il existe une fonction en C++ pour redimensionner un tableau dynamiquement. Au même titre que REDIM en VB. Merci
0
ADPro22 Messages postés 126 Date d'inscription mercredi 18 juillet 2001 Statut Membre Dernière intervention 27 octobre 2004
24 mars 2002 à 00:27
-------------------------------
Réponse au message :
-------------------------------

En C++, seules les fonctions new et delete sont disponibles.
Il n'est pas possible de redimensionner directement un tableau. En C, cela existe avec la fonction realloc.

Pour utiliser new et delete - sans boucle pour recopier les éléments, structures - il faut utiliser memcpy.

Voici un petit exemple :

#include
using namespace std;
void main()
{
int n;
int *i;
i = new int[5];
for(n=1;n<=5;n++)
{
i[n-1]=n;
}
for(n=1;n<=5;n++)
{
cout << i[n-1] << " ";
}
cout << endl << endl;
int *j;
j = new int[10];
memcpy(j,i,5*sizeof(int));
for(n=6;n<=10;n++)
{
j[n-1]=n;
}
for(n=1;n<=10;n++)
{
cout << j[n-1] << " ";
}
cout << endl;
delete [] i;
delete [] j;
}

-------------------------------
Réponse au message : Attention malloc free sont des fonctions C tandis que new et delete c'est du C++
-------------------------------

Je ne sais pas s'il existe une tel fonction en c++
j'ai deja entendu parler de realloc et de malloc mais je nesais pas comment ca marche
Sinon tu peux contourner le probleme:
int *tab;
tab = new int[10];

//tes instructions et notament l'initialisation du tableau et les affectation

//dq tu veux redimenssioner
int *tmp;
tmp=tab;
tab = new int [nouvelle valeur];
for(int i = 0;i<10;i++)
{
tab[i]=tmp[i];
}
delete[] tmp;

-------------------------------
Réponse au message :
-------------------------------

Bonjour, j'aimerais savoir s'il existe une fonction en C++ pour redimensionner un tableau dynamiquement. Au même titre que REDIM en VB. Merci
0
Rejoignez-nous