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 :

MatriceGraphe pointeurs vector ou tableau bidimentionnel


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 188
    Points : 51
    Points
    51
    Par défaut MatriceGraphe pointeurs vector ou tableau bidimentionnel
    Bonjour,

    j'essaye d’implémenter une matrice qui représente un graphe. Le problème est que je ne connais pas le nombre des nœuds et le nombre des arcs à l'avant.
    Je propose la classe graphe.h comme suit :

    class graphe
    {
    vector<Noeud*> vecNoeuds ; // Noeud est une classe
    Lien ** matLiens ;// Lien est classe et matLiens c'est une matrice des liens
    };

    Je veux savoir, est il plus performant ,pour construire la matrice :
    1) d'utiliser des pointeurs Lien ** matLiens ou
    2 utiliser un vecteur de vecteur vector< vector<Lien> matLiens ou
    3) utiliser un simple tableau bidimensionnel matLiens[][]

    Merci d'avance.

  2. #2
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    un post sur ce thème à été crée dans ce forum il y peut de temps !

  3. #3
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 188
    Points : 51
    Points
    51
    Par défaut
    oui j'ai déjà vu cette discussion en fait elle a été crée par moi. Mais je suis débutante en C++. je veux juste savoir ici si la taille de la matrice n'est pas connu à l'avant est il possible de travailler sans l'allocation dynamique.

  4. #4
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Ehonn répond à ta question :
    Les std::vector sont aussi performants que les tableaux dynamiques. Pour des tableaux 2D, il faut en effet éviter des std::vector<std::vector<T>> et préférer un std::vector linéarisé (encapsulé dans une classe). Il serait intéressant que tu puisses nous donner un exemple qui reproduit ceci
    Autre petite différence, de base std::vector initialise tous ces éléments contrairement à new.
    Une fois ces éléments connus, il suffit de faire attention à bien réserver la place (ne pas faire des push_back dans tous les sens) et aux copies pour avoir les mêmes performances.

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/10/2005, 13h32
  2. pointeur pour un tableau 2d
    Par olive14 dans le forum C
    Réponses: 6
    Dernier message: 07/05/2005, 15h02
  3. Références et pointeurs sur un tableau
    Par smag dans le forum C++
    Réponses: 2
    Dernier message: 01/03/2005, 20h29
  4. [Collections] Conversion de Vector en tableau de String
    Par java_math dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 06/06/2004, 12h55
  5. Pointeur vers un tableau
    Par Nikos dans le forum C
    Réponses: 3
    Dernier message: 09/12/2002, 00h43

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