Groupe : Membres
|
bonjour à tous,
Je souhaiterais initialiser mon tableau dynamique à 0, mais je n'ai pas reussi, est-ce que je peux l'initialiser sans lui avoir attribué la taille?
Code : C++
long *tab;
tab = new long[n];
tab[]={0};
merci
|
Le Monde d'Akhiris
 Groupe : Membres
|
Une boucle for et c'est réglé.
|
Groupe : Membres
|
j'y avais pensé mais il n'y a pas d'autres moyens?
|
Groupe : Membres
|
Il n'y a pas d'autres moyens à ma connaissances. En tout cas, pas pour des variable de type int, long etc...
Par contre, pour les classes, il est possible d'appeler le constructeur lors de l'initialisation du tableau.
Code : C++class MaClasse
{
public:
int var;
MaClasse(int i) {
var = i;
}
};
int main()
{
MaClasse *tab;
tab = new tab[10](5); // appelle le constructeur avec la valeur 5 pour toutes les instances
return 0;
}
|
Groupe : Membres
|
ok merci!
Mais j'ai maintenant un autre probleme, si mon nombre de cases de mon tableau dynamique de type long dépasse 2032 il bug lors de l'execution,si maintenant je change mon tableau en type double il va bugger lorsque n =1016.
Quelqu'un a une idée d'ou cela peut venir?
merci
|
 Groupe : Membres
|
Ca ressemble à un dépassement de mémoire vu qu'un double (je crois) prend 2x plus de place que les long en mémoire. Ce qui expliquerais que tu puisse stocker 2x fois moins de double que de long. Maintenant est-ce vraiment un dépassement de mémoire ...
Super merci au site !
|
吸血鬼


|
pas un dépassement mais un manque de mémoire.
pas commencés - en cours - finis - (dernier tome lu)
manga : Love Hina - Ichigo 100% - Fruits Basket - School Rumble - Death Note - Parmi Eux - One Piece (46) - Naruto (45) - Lovely Complex (10) - Fullmetal Alchimist (22) -> My Manga
IDE multiplateforme pour Qt  !! Qt @ IRC --> #qt-fr@irc.freenode.net
|
Apprenez à utiliser la STL !!
 Groupe : Membres
|
Vu qu'on est sur le forum C++, je me permet une remarque:
En C++ y a le template vector qui fait ça très bien tout seul.
Code : C++
#include <vector>
std::vector<int> monTableau; //cree un tableau dynamique
monTableau.push_back(1); //Ajoute un 1 a la fin du tableau
Pour les autres fonctions,il suffit de jeter un oeil aux références de la STL.
|
Groupe : Membres
|
+42 à la réponse de Nanoc.
Note au passage: le constructeur permet d'initialiser directement n éléments tous à une même valeur autre que 0.
|
Groupe : Membres
|
Le principe est d'utiliser un champ valeur par defaut.
.hpp
Code : C++
#ifndef TRUCDYNAMIQUE
#define TRUCDYNAMIQUE
class TrucDynamique{
int * T;
int defaut;
int n;
TrucDynamique();
TrucDynamique(int);
~TrucDynamique();
ReDim(int)
};
#endif
.cpp
Code : C++#include "TrucDynamique.hpp"
TrucDynamique::TrucDynamique(){
T=null;
n=0;
defaut = 0;
}
TrucDynamique::TrucDynamique(int taille){
T=new int[taille]
n=taille;
defaut = 0;
unsigned int i;
for(i=0;i<n;i++){ T[i] = defaut;}
}
TrucDynamique::~TrucDynamique(){
delete[] T;
}
TrucDynamique::ReDim(int taille){
int * T2 = new int[taille]
int i;
for(i=0;i<min(n,taille);i++){ T2[i] = T[i];}
for(i=n;i<taille;i++){T2[i] = defaut;}
delete[] T;
T=T2;
}
|