IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Tableau static


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Par d�faut Tableau static
    Bonjour,

    Donc je souhaiterai creer un tableau static mais ca taille je la rentre au moment de l'appel de la fonction Initializer(int taille) de la classe :

    ex :
    nomclass *cl = nomclass();
    cl.Intializer(10);

    donc je sais qu'il faut faire

    static int tableau[taille]

    Mais comme je connais pas encore ca taille lorsque je d�clare la ligne ci-dessus. Donc je pense que la seule solution est de le faire en dynamique (� moins que vous saviez comment on le fait normalement.

    Donc je fais :

    static int *tableau;

    puis dans la procedure Intializer(int ) je fais : tableau = new int[]

    Mais bon ca marche pas, faut que je met la precedure en static aussi?

    Bref je pense qu'un petit exemple serait bien venu, car j'ai pas trouv�.

    Merci

  2. #2
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Pourquoi pas un vecteur statique ?

  3. #3
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par d�faut
    Donc je pense que la seule solution est de le faire en dynamique
    En effet, si c'est au moment de l'�x�cution il n'y a pas le choix.
    A moins de faire un tableau static assez grand mais:
    -risque d'utiliser trop de m�moire pour rien,
    -v�rifier la taille demand�e par l'utilisateur pour �viter les d�bordements.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Par d�faut
    Citation Envoy� par Miles
    Pourquoi pas un vecteur statique ?
    Je vois pas c'est quoi un vecteur statique??

    Citation Envoy� par seriousme
    En effet, si c'est au moment de l'�x�cution il n'y a pas le choix.
    A moins de faire un tableau static assez grand mais:
    -risque d'utiliser trop de m�moire pour rien,
    -v�rifier la taille demand�e par l'utilisateur pour �viter les d�bordements.
    La taille serait de taille 20 maximum. Donc je pense pas que ca poserait des problemes. Mais je parviens pas � faire un tableau static lors de l'execution car le tableau static se d�clare en dehors du main

    Merci

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Par d�faut
    Mais je vois pas la difference d'une tableau static et d'un vecteur?

    DOnc je dois d�clarer comme ceci :

    const static vector <int> tableau;

  6. #6
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par d�faut
    Je vois pas c'est quoi un vecteur statique??
    La classe "vector" impl�mente des tableaux dynamiques bien meilleurs que les tableaux traditionnels:
    http://c.developpez.com/faq/cpp/?page=STL#STL_vector

  7. #7
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par d�faut
    const static vector <int> tableau;
    Ca ne peut pas �tre "const" car le tableau est remplie � l'ex�cution.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Par d�faut
    Ah si j'ai bien compri c'est un tableau qui permet d'�tre utilis� aussi plus facilement via des fonctions pr�definie comme resize. Mais bon en performance ca ne serait pas un peu plus lent? Car le seul souci que j'ai c'est de d�clarer un tableau avec une taille que je passe en argument d'une fonction et le mettre en static.

    Mais bon si c'est la seule solution je suis preneur alors du vecteur ^^

    Merci

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Par d�faut
    Donc j'ai essay�, j'ai cr�e le vecteur sans souci soit :

    private:
    static vector <int> *num

    Donc un pointeur d'entier en vecteur

    puis dans une procedure de la classe j'initialise le tableau a NULL soit :
    num.resize(10);
    fill(num.begin(),num.end(),NULL)

    Mais bon ca va pas.

    A la vitesse que j'avance j'aurai jamais fini, je dois rendre un solver de sudoku dans meme pas une semaine :-(

    Merci

  10. #10
    Membre �m�rite Avatar de MatRem
    Profil pro
    Inscrit en
    D�cembre 2002
    Messages
    750
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 750
    Par d�faut
    Pourquoi utiliser un pointeur de vecteur<int>. Tu peux utiliser un vecteur<int> tout simplement. En plus vu comment tu t'en sert apr�s �a ne risquait pas fonctionner.

    Si tu veux faire un vecteur de pointeur d'entier, tu peux faire vector<int *>, mais bon attention � ne pas utiliser les pointeurs pour rien.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Par d�faut
    Ok j'ai fais les modifications mais j'ai toujours une erreur a partir du resize

    /tmp/ccDw4xhZ.o: dans la fonction "ManageList::Initializer(int)":
    prog.cc.text+0xd8): r�f�rence ind�finie vers "ManageList::num"
    collect2: ld a retourn� 1 code d'�tat d'ex�cution
    A mon avis il arrive pas a acc�d� � l'objet, donc j'ai fais this.num comme c'est en static mais ca marche toujours pas

    Ben j'utilise des vecteurs comme on m'a dit qu'avec des tableaux pour d�clarer .... il vaut mieu utiliser des vecteurs. Ensuite, comme je voulais faire un tableau de int de pointeur (pour le test apres ca sera pas des int mais des objets ManageList) puis les pointeurs me permettent de ranger par pertinance les cases (via les listes).

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Par d�faut
    J'ai pas de probleme pour resize quand je met pas le vector en static mais bon comme il doit �tre en static faut que je trouve puis fill me met des erreurs incompr�hensible

    Alle une soir�e de moins il me reste 4 jours pour le finir pff

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Par d�faut
    Donc apr�s avoir cherch� en vain, j'ai eu un d�clique et je me suis rappel� qu'une var static meme � l'interieur de la classe on l'appel par nomclass::var

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Par d�faut
    Ok, tout va niquel sauf un truc :

    quand je fais fill(ManageList::num.begin(), ManageList::num.end(),NULL);

    Ca ne fonctionne pas

    mais si je fais par exemple :
    ManageList::num[0] = NULL

    Ca fonctionne

    Donc suis-je oblig� de faire une boucle pour initialiser?

    Merci

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Par d�faut
    Bref, quand j'y pense on fait comment pour d�clarer un tableau dynamique static en d�clarant ca taille dans le constructeur.

    Par exemple pour une classe "CLASS" :

    Public:
    static type *var;
    Dans le constructeur (Cette ligne me met des erreurs) :
    CLASS::var = new type[taille];
    puis je d�clare en dehors de la classe :
    type *CLASS::var;
    Un grand merci, je veux juste savoir comment resoudre cette erreur

  16. #16
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Tu sais, si tu veux qu'on t'aide, va falloir �tre plus explicite avec ton code et les erreurs.

    Un constructeur ne devrait jamais initialiser une variable statique.

Discussions similaires

  1. R�ponses: 2
    Dernier message: 21/02/2013, 12h24
  2. Positionnement dans un double tableau static
    Par l'unique dans le forum D�buter
    R�ponses: 2
    Dernier message: 25/04/2011, 21h24
  3. Tableau static dans une dll VC++ ?
    Par lio33 dans le forum MFC
    R�ponses: 2
    Dernier message: 11/07/2007, 10h50
  4. R�ponses: 1
    Dernier message: 23/09/2006, 00h41
  5. [D�butant(e)][embarqu�] Base de donn�es vs tableau static
    Par ludonantes dans le forum Collection et Stream
    R�ponses: 16
    Dernier message: 15/02/2006, 20h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo