Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1985 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  vecteur de vecteur ou pointeur de pointeur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

vecteur de vecteur ou pointeur de pointeur

n°2183355
kochfet
Posté le 31-03-2013 à 19:34:23  profilanswer
 

Bonjour à tous,
 
J'ai besoin de coder un graphe avec une matrice.  
J'ai deux classes Noeud.h et Lien.h
Les cases de la matrice correspondent à des objets de type Lien. Chaque case correspond donc à un lien entre deux nœuds.
Pour ce faire, j'ai essayé avec tab des pointeurs Lien ** tab mais j'arrive pas à terminer cet essai car je ne connais pas le nombre de lignes et de colonnes. En fait, ces nombres correspondent au nombre des nœuds dans le graphe qui est n'est pas stable. Donc, est ce que je peux utiliser vector< vector<Arc> >  pour résoudre ce problème.
 
Le code de la classe Graphe que je veux le modifier s'il ne convient pas.
 

Code :
  1. #ifndef Graphe_H
  2. #define Graphe_H
  3. #include<iostream>
  4. #include<string>
  5. #include <vector>
  6. #include "Noeud.h"
  7. #include "Lien.h"
  8. using namespace std;
  9. class Graphe
  10. {
  11. private :
  12. vector<Noeud*> vecNoeuds;
  13. public :
  14. Lien** matLiens;
  15. string nom;
  16. Graphe(string);
  17. Graphe(const Graphe& );
  18. void ajouterNoeud(Noeud* n);
  19. void ajouterLien(Noeud NoeudDépart,Noeud NoeudArrivé,string attr);
  20. void afficher();
  21. ~Graphe();
  22. };
  23. #endif


 
Remarque :
 
je suis entrain de coder un problème d'optimisation ou le temps d'exécution est indispensable.
 
Merci d'avance.
 

mood
Publicité
Posté le 31-03-2013 à 19:34:23  profilanswer
 

n°2183389
kochfet
Posté le 01-04-2013 à 10:41:47  profilanswer
 

svp j'ai besoin de votre aide

n°2183406
I_m_back
Posté le 01-04-2013 à 13:37:05  profilanswer
 

Si tu ne connais pas la taille de ton tableau, je pense qu'utiliser des vector est une bonne solution


---------------
Ta peau de nacre noir, la courbe de ton cul
n°2183412
kochfet
Posté le 01-04-2013 à 14:41:45  profilanswer
 

si on utilise vector <vector<Lien *>> comment je peut coder mon constructeur par défaut.

n°2183413
I_m_back
Posté le 01-04-2013 à 14:47:10  profilanswer
 

tu n'as rien à faire. le vector sera vide à la construction de ton objet Graph


---------------
Ta peau de nacre noir, la courbe de ton cul
n°2183418
kochfet
Posté le 01-04-2013 à 15:42:33  profilanswer
 

et pour le lien* je ne dois pas faire une allocation dynamique dans le constructeur?
Et pour mon destructeur que dois je faire?
 
et autre question svp : j'ai un pointeur ici sur des objets de type Lien. Est ce que je peux ne pas l'utiliser? et juste mettre vector<vector<Lien>>.
Remarque: la notion d'héritage et de polymorphisme sera présente dans mon travail.

n°2183446
Terminapor
I'll see you rise.
Posté le 01-04-2013 à 17:56:02  profilanswer
 

Ben un container peut contenir n'importe quel type de variable, donc oui tu peux faire vector<vector<Lien>>.
 
Et un Lien n'est pas simplement une structure avec trois variables? (les nœuds qu'il relies + le coût)


---------------
Perhaps you don't deserve to breathe
n°2183452
kochfet
Posté le 01-04-2013 à 18:11:11  profilanswer
 

je le declare comme etant une classe  

Code :
  1. class Lien
  2. {
  3. private :
  4. Noeud n1;
  5. Noeud n2;
  6. public :
  7. Lien();
  8. Lien(Noeud no1, Noeud no2);
  9. Noeud getNoeud1();
  10.     Noeud getNoeud2();
  11. void setNoeud1(Noeud no1);
  12. void setNoeud2(Noeud no2);
  13. void afficher();
  14. ~Lien();
  15. };
  16. #endif


 
En fait c'est une classe mère qui a deux classes dériveés.  
 
et pour Lien* pourquoi non?

n°2183455
Terminapor
I'll see you rise.
Posté le 01-04-2013 à 18:16:30  profilanswer
 

Si tu as absolument besoin du polymorphisme, alors il faut absolument utiliser un pointeur (ou une ref quand tu peux), maintenant je vois mal pourquoi tu aurais besoin de classes hérités de Lien, surtout que n1&n2 sont en private, le destructeur n'est pas virtual ni la fonction d'affichage (et pense à faire passer no1/no2 en ref constante, ça évite des copies).


---------------
Perhaps you don't deserve to breathe
n°2183459
kochfet
Posté le 01-04-2013 à 18:37:50  profilanswer
 

j'ai deux classes filles qui héritent de la classe mère Lien.h. En fait, je suis entrain de coder un graphe qui représente une requête SQL. Et dans une requête SQL on peut trouver des liens de jointures des liens qui représentent une appartenance...pour moi ces liens sont des sous classes de la classe mère Lien. Je réfléchit de cette façon parce que :
  ma matrice comporte des objets instances de ces deux classes filles donc possèdent des instances de différents types. Par contre, un vector contient des objets de même type et pour que je puisse utiliser vector j'utlise l'héritage.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  vecteur de vecteur ou pointeur de pointeur

 

Sujets relatifs
Calcul de la norme d'un vecteur généré de façon aléatoire en langage Cimpossible de créer un vecteur de 32000 * 32000 short
pointeur de tableau 2D d'entiers...[CPP/Lua] Pointeur sur table
déclarer un pointeur vers un tableau de tableaux ...?Comment parcourir un vecteur dans un vecteur ?
[C#/C] Dllimport et pointeur de fonction[résolu] question bête sur un pointeur..
pointeur sur vecteur de doublePointeur sur un vecteur d'objets
Plus de sujets relatifs à : vecteur de vecteur ou pointeur de pointeur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR