Bonjour , j'ai une question à propos les tableaux dynamiques !
j'ai un tableau dynamique de type Exemplaire* ( classe ) il contient des pointeurs comme il est indiqué dans le code ; je veux afficher les exemplaires ayant une langue donné , sachant que la langue est un attribut de la classe exemplaire !
class Bibliotheque{
private:
vector<Exemplaire*> exemplaire;
string name ;
public:
Bibliotheque(string testnom):name(testnom)
{
cout<< "La bibliothèque" <<name<< "est ouverte !"<<endl;
}
string getNom(){
return name;
}
void stocker(Oeuvre &o )
{ Exemplaire* ex=new Exemplaire(o);
exemplaire.push_back(ex);
}
void stocker(Oeuvre &o , int n )
{ Exemplaire* ex=new Exemplaire(o);
for (int i=0;i<n;i++) {exemplaire.push_back(ex);
}}
void lister_exemplaires ()
{
for(int i=0;i<exemplaire.size();i++) {
exemplaire[i]->Afficher();
}
}
void lister_exemplaires(string langue)
{
cout<<endl;
}
~Bibliotheque(){
cout<<"La bibliothèque "<<name<<" ferme ses portes,et détruit ses exemplaires :"<<endl;
}
};
Pourquoi ne pas utiliser une map avec comme key les langues, et comme values les exemplaires ?
D'abord, ça ne marcherait pas. Pour une langue, il peut y avoir PLUSIEURS exemplaires. Pour indexer par langue, ça serait plutôt une multimap, une map dont les values sont des ensembles d'exemplaires.
Ensuite rien ne dit que l'indexation par langue soit l'opération la plus fréquente. Ce n'est peut être pas judicieux de faire une fixette la dessus pour le choix de la structure de données.
Sur le plan pédagogique, c'est un simple exercice de parcours de tableau + indirection + sélection par accesseur. L'OP a déjà du mal avec ça (pas compris qu'il lui fallait un moyen de connaitre la langue d'un exemplaire), pas la peine d'aller taper dans des structures de données plus complexes, c'est vraiment pas le moment.
Déjà, la boucle "foreach" sur un vector est inconnue au bataillon. Et avec la construction d'une copie pendant l'ajout, on yoyotte joyeusement entre sémantiques de valeur et d'entité.
Je m'étonne de ne pas avoir entendu "smart pointer". Il y a du relâchement pendant les vacances.
La langue d'un exemplaire, ce n'est pas la même que celle de l'oeuvre par hasard ?
- Edité par michelbillaud il y a 32 minutes
oui ! mais comme j'avais dit , je ne sait pas comment accéder aux élément du tableau dynamique cad : comment verifier la langue des exemplaires de toutes les cases si elle est identique a celle de mon argument !
En c++ on accède aux éléments d'un vector comme à ceux d'un tableau, avec des indices entre crochets.
Si tu avais un exemplaire dans une variable e, tu ferais comment pour déterminer sa langue ?
Exemplaire e;
cout << "langue = " << .... ???
Ps : tu perdrais moins de temps en revoyant ton cours. La ça fait trois jours que tu travailles intensément jour et nuit sur cette question, alors qu'il te faudrait 2 minutes.
- Edité par michelbillaud 8 août 2019 à 10:33:16
manipulation des tableaux vector OOP
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Si ça n'explose pas, alors ce n'est pas intéressant.