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

  FORUM HardWare.fr
  Programmation
  C++

  Déclaration de structure...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Déclaration de structure...

n°406866
haazheel
Posté le 24-05-2003 à 17:56:47  profilanswer
 

Salut,
 
alors je me pose la question de savoir laquelle d'entre ces deux méthodes il est préférable d'utiliser:
 

  • Déclarer un vecteur de structures
  • Appeller une fonction qui remplit ce vecteur
  • Utiliser les données de ce vecteur dans la fonction appellante


ou bien:
 

  • Appeller une fonction qui déclare le vecteur de structures et qui le remplit
  • Dans la fonction appellante, redéclarer le vecteur pour l'utiliser


Je pense qu'il est préférable d'opter pour la première solution, puisqu'elle ne nécessite qu'une seule déclaration, mais c'est pour être sûr...
 
Merci d'avance


---------------
Another .Net Blog
mood
Publicité
Posté le 24-05-2003 à 17:56:47  profilanswer
 

n°406867
Taz
bisounours-codeur
Posté le 24-05-2003 à 17:58:39  profilanswer
 

gné, je capte pas tout, solution 1 je vais dire

n°406911
theshockwa​ve
I work at a firm named Koslow
Posté le 24-05-2003 à 20:26:07  profilanswer
 

euuuh ... Je dirais simplement que ton vecteur doit être détruit au même niveau que celui où il est créé ... Mais pareil, c'est un peu short pour dire, là ...


---------------
last.fm
n°406940
gatorette
Posté le 24-05-2003 à 23:04:23  profilanswer
 

Je pense qu'il est préférable de déclarer ton vecteur dans la fonction qui va l'utiliser. En effet, la déclaration va dépendre de l'utilisation. Dans certains cas, il vaudra mieux utiliser une allocation sur le tas et dans d'autre, sur la pile.


---------------
each day I don't die is cheating
n°407052
haazheel
Posté le 25-05-2003 à 14:10:50  profilanswer
 

++Taz a écrit :

gné, je capte pas tout, solution 1 je vais dire


 
Bon, ben un peu de code alors (il fonctionne, c'est pas un problème :D ):
 
J'ai deux structures et un vecteur:
 

Code :
  1. struct ContenuUneStatUnXML
  2. {
  3.         AnsiString NomStat;
  4.         vector<int> VecUneStatUnXML; //Contient chaque Frame
  5. };
  6. struct ContenuTtesStatUnXML
  7. {
  8.         AnsiString PathXML;
  9.         vector<ContenuUneStatUnXML> VecTtesStatUnXML;
  10. };
  11. vector<ContenuTtesStatUnXML> VecTtesStatsTsXML;


 
J'ai une fonction appellante MakeClip:
 

Code :
  1. vector<ContenuTtesStatUnXML> VecTtesStatsTsXML;
  2. VecTtesStatsTsXML.clear();
  3. ContenuUneStatUnXML CUSUX;
  4. ContenuTtesStatUnXML CTSUX;
  5. for (unsigned int i=0; i < VecSelectedIndex.size(); i++)
  6. {
  7.    int IndexDsContenu = VecSelectedIndex[i];
  8.    AnsiString PathXML = VecListeMatches[IndexDsContenu].PathFichierStats;
  9.    CTSUX.PathXML = PathXML;
  10.    if (!RemplirVecTSTX(VecTtesStatsTsXML,VecSelectedStats,CUSUX,CTSUX))
  11.                 return false;
  12.   //ICI ON UTILISE LE VECTEUR ET LES DONNEES QU'IL CONTIENT
  13. }


 
Et une fonction appellée RemplirVecTSTX, qui va chercher des infos dans un fichier XML et qui remplit les vecteurs de structures:
 

Code :
  1. bool __fastcall TListeMatchesForm::RemplirVecTSTX(
  2.                 vector<ContenuTtesStatUnXML> & VecTtesStatsTsXML,
  3.                 vector<int> & VecSelectedStats,
  4.                 struct ContenuUneStatUnXML & CUSUX,
  5.                 struct ContenuTtesStatUnXML & CTSUX)
  6. {
  7. XMLStats->FileName = CTSUX.PathXML;
  8. XMLStats->Active = true;
  9. if (!XMLStats->Active)
  10.    return false;
  11. _di_IXMLNode PtrContenu = XMLStats->DocumentElement;
  12. int NbreStatsChoisies = VecSelectedStats.size();
  13. for (int i=0; i < 2; i++)
  14. {
  15.    _di_IXMLNode PtrEquipe = PtrContenu->ChildNodes->GetNode(i);
  16.    AnsiString NomEquipe = PtrEquipe->GetAttribute("Equipe" );
  17.    _di_IXMLNode PtrStaff = PtrEquipe->ChildNodes->GetNode(0);
  18.    int NbreJoueurs = PtrStaff->ChildNodes->GetCount();
  19.        
  20.    CUSUX.VecUneStatUnXML.clear();
  21.    for (int j=0; j < NbreJoueurs; j++)
  22.    {
  23.       _di_IXMLNode PtrJoueur = PtrStaff->ChildNodes->GetNode(j);
  24.       AnsiString NomJoueur = AnsiString(PtrJoueur->GetAttribute("Nom" )).Delete(1,3);
  25.       if (EquipeChoisie || (AnsiString(NomJoueur) == NomSelectionne))
  26.       {
  27.          CTSUX.VecTtesStatUnXML.clear();
  28.          for (int k=0; k < NbreStatsChoisies; k++)
  29.          {
  30.             _di_IXMLNode PtrStatGlob = PtrJoueur->ChildNodes->GetNode(VecSelectedStats[k]);
  31.             int NbreStats = PtrStatGlob->ChildNodes->GetCount();
  32.                                
  33.             CUSUX.NomStat = pListeStats[VecSelectedStats[k]];
  34.             for (int l=0; l < NbreStats; l++)
  35.             {
  36.                _di_IXMLNode PtrStat = PtrStatGlob->ChildNodes->GetNode(l);
  37.                int FrameStat = PtrStat->GetNodeValue();
  38.                CUSUX.VecUneStatUnXML.push_back(FrameStat);
  39.             }
  40.             CTSUX.VecTtesStatUnXML.push_back(CUSUX);
  41.          }
  42.       }
  43.    }
  44.    if (EquipeChoisie && (NomEquipe == NomSelectionne))
  45.       break;
  46. }
  47. VecTtesStatsTsXML.push_back(CTSUX);
  48. return true;
  49. }


 
Bon alors ici je déclare le vecteur

Code :
  1. vector<ContenuTtesStatUnXML> VecTtesStatsTsXML;


et les structures

Code :
  1. ContenuUneStatUnXML CUSUX;
  2. ContenuTtesStatUnXML CTSUX;


dans la fonction appellante MakeClip et je les fais passer par référence à la fonction appellée RemplirVecTSTX, et je les utilise au retour de cette fonction...
 
C'est la solution 1...
 
La solution 2 consisterait à déclarer de la même manière mon vecteur et mes structures, mais dans RemplirVecTSTX, puis au retour de la fonction dans MakeClip, les redéclarer de la même manière pour les utiliser...
 
Et plus j'écris, plus je pense que c'est la solution 1 qui doit être utilisée... J'attends confirmation...
 
En espérant avoir été plus clair :)
 
Edit: typo


Message édité par haazheel le 25-05-2003 à 14:14:41

---------------
Another .Net Blog

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

  Déclaration de structure...

 

Sujets relatifs
probleme d'incrementation de structure.Séparer la définition et déclaration d'une classe? (gcc) [résolu]
[débutant] Delphi ... structure if ..thenCherche structure des fichiers rss !
[dBASE] Copier la structure d'une table pour mettre sous Excelest-ce qu'on peut déclarer une structure dans une classe ?
[ SQL serveur ] - récuperer en SQL la structure d'une base / d'une ...fonction qui retourne une structure
Questions sur structure d'images 24 bits{log4j} logger en BD, dans une table ayant un structure donnée
Plus de sujets relatifs à : Déclaration de structure...


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