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 / vector : utilisation


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Points : 116
    Points
    116
    Par défaut tableau / vector : utilisation
    Bonjour,

    je me pose la question de savoir ce que je dois utiliser pour créer des objets dynamiquement. Sachant que je vais être amené à détruire ces objets par la suite.
    De plus la taille du tableau/vecteur est indéterminée.
    Enfin, pour chacun de ces objets je lance une de leurs méthode dans un thread créé avec la libraire boost.

    Voici un début de code (qui ne fonctionne pas pour le moment) qui doit faire ce que je désire avec des vecteurs. Les parties en commentaires sont des morceaux qui fonctionnent mais que n'utilise pas pour le moment puisque je cherche une autre manière de faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    vector<Cellule> tableCellule;
    vector<boost::thread> tableThread;
     
    for(vector<Cellule>::iterator i = tableCellule.begin(); i != tableCellule.end();++i) 
    {
    	tableCellule.insert( tableCellule.end() , Cellule(*environement) );
    	tableThread.insert(tableThread.end(), boost::thread(boost::bind( &Cellule::engine, tableCellule.back()) )) ;
    }

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    Le bout du code que tu présente est pour le moins étrange (pour ne pas dire plus). En fait, je n'ai pas vraiment compris ton besoin. Tu veux rajouter des éléments à tes vecteurs? Tu n'a pas besoin de les créer dynamiquement vu que les vecteurs les stockent par valeur et pas par adresse.

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Points : 116
    Points
    116
    Par défaut
    Au début, quand j'ai commencé à créer cette classe, j'ai utilisé deux tableaux, un pour "Cellule" et un pour "boost::thread". Mais, après réflexion je me suis rendu compte que la taille du tableau est amené à changer au cour de l'exécution du programme.

    Je me demande donc, quelle est le meilleur moyen de gérer cette problématique.
    J'ai donc écris un petit bout de code qui utilise des vecteurs. Mais j'ai un problème avec la création du vecteur de thread.

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Ce code compile !?
    Un thread n'est pas CopyConstructible ni Assignable...
    Boost ftw

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Points : 116
    Points
    116
    Par défaut
    non ce code ne compile pas, j'ai une erreur au niveau du vecteur de thread.
    Si j'utilise des tableau de pointeur avec des tailles prédéfinies ça marche.

    Sauf que pour mon application je ne dois pas fixer la taille des tableaux.
    Avec des aléatoires un ou plusieurs élément sont détruits.

    Voila pourquoi j'ai tenté d'utiliser les vecteurs mais il me manque quelque chose.
    Si vraiment ce n'est pas possible je n'ai qu'a coder une propre liste doublement chainée . . .

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Apparemment, tu n'as pas compris qu'un boost::thread, ce n'était pas copiable. Ça doit pourtant être clairement documenté dans la doc (et est d'ailleurs assez évident, copier un thread ça veut rien dire).
    std::vector nécessite en prérequis à tout type sur lequel tu l'instancies que celui si soit CopyConstructible et Assignable. C'est aussi clairement dans la doc de ta bibliothèque standard.
    Donc tu peux pas écrire std::vector<boost::thread>.

    Y'a un conteneur spécial dans Boost.Thread pour contenir des quantités variables de thread.
    Sinon, y'a aussi une implémentation de vector qui est move-aware est qui fonctionne alors avec boost::thread (parce qu'un thread, bien que non copiable, est déplaçable).
    Et tu peux parfaitement mettre des pointeurs de thread dans un vector, tout comme tu le fais dans ton tableau (c'est juste bête).

    Bref, lis la documentation.
    Boost ftw

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Points : 116
    Points
    116
    Par défaut
    d'accord j'ai toutes les réponses que je voulais

    merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/11/2007, 00h50
  2. [Vector] Utilisation d'un Vector
    Par LP-mpascolo dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 04/06/2007, 16h50
  3. [Tableaux] Tableau bidementionnel utilisation
    Par zoreil dans le forum Langage
    Réponses: 4
    Dernier message: 01/08/2006, 10h59
  4. variable type tableau (vector) statique / constants
    Par Kaktus dans le forum SL & STL
    Réponses: 5
    Dernier message: 13/10/2005, 22h46
  5. supprimer un element d'un tableau vector
    Par boby61 dans le forum SL & STL
    Réponses: 22
    Dernier message: 23/03/2005, 20h49

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