Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C++ > initialisation > Lecture du sujet

initialisation

Vous devez être inscrit pour pouvoir poster des messages

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne raziel99 # Posté le 19/06/2007 à 09:56:20
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
Hors ligne Cyprien_ # Posté le 19/06/2007 à 10:06:58
Le Monde d'Akhiris
Avatar
Groupe : Membres
Une boucle for et c'est réglé.

Un jeu online novateur ?
Le Monde d'Akhiris !
 
Hors ligne raziel99 # Posté le 19/06/2007 à 10:10:10
Groupe : Membres
j'y avais pensé mais il n'y a pas d'autres moyens?
Hors ligne Sebajuste # Posté le 19/06/2007 à 10:28:11
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;
}
Hors ligne raziel99 # Posté le 19/06/2007 à 11:45:50
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
Hors ligne GimralasQS # Posté le 19/06/2007 à 11:52:49
Avatar
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 !
 
Hors ligne minirop # Posté le 19/06/2007 à 19:50:30
吸血鬼
Avatar
Modérateurs
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 Image utilisateur !! Qt @ IRC --> #qt-fr@irc.freenode.net
 
Hors ligne Nanoc # Posté le 19/06/2007 à 19:55:29
Apprenez à utiliser la STL !!
Avatar
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.
 
Hors ligne lmghs # Posté le 19/06/2007 à 22:47:18
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.
 
Hors ligne ledemonboiteux # Posté le 20/06/2007 à 14:34:53
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;
}


Retour au forum "Langage C++" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 101 Zéros connectés | Requêtes SQL 6 requêtes | Temps de génération de la page : Total (SQL) 0.0205s (0.0062s)