#include <iostream> #include <vector> struct Album { Album(const std::string& nom, const std::vector<std::string>& titres) : _nom(nom), _titres(titres) { } void print(std::ostream& out) const { out << _nom << "("; bool first = true; for (auto titre : _titres) { if (first) first = false; else out << ","; out << titre; } out << ")"; } std::string _nom; std::vector<std::string> _titres; }; struct Auteur { Auteur(const std::string& nom, const std::vector<Album>& albums) : _nom(nom), _albums(albums) { } void print(std::ostream& out) const { out << _nom << ": "; bool first = true; for (auto album: _albums) { if (first) first = false; else out << ","; album.print(out); } out << std::endl; } std::string _nom; std::vector<Album> _albums; }; std::ostream& operator<<(std::ostream& out, const std::vector<Auteur>& armoire) { for (auto auteur : armoire) auteur.print(out); return out; } int main() { std::vector<Auteur> armoire; armoire.push_back(Auteur("Auteur1", { Album("Album1", {"titre1", "titre2", "titre3"}) } )); armoire.push_back(Auteur("Auteur2", { Album("Album2", {"titreA", "titreB", "titreC"}), Album("Album9", {"titreZ", "titreY"}) } )); armoire.push_back(Auteur("Auteur3", { Album("Album3", {"titre9", "titre8", "titre7"}) } )); std::cout << "Avant:\n" << armoire << std::endl; std::string nomRechercheAuteur = "Auteur2"; std::string nomRechercheAlbum = "Album2"; for (auto& auteur : armoire) { if (auteur._nom == nomRechercheAuteur) { for (auto& album : auteur._albums) { if (album._nom == nomRechercheAlbum) { std::cout << "ok" << std::endl; album._titres.push_back("nouveau titre"); // ici } } } } std::cout << "Apres:\n" << armoire << std::endl; return 0; }
Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
armoire.push_back(Auteur("Auteur1", {{ Album("A1", {"t1", "t2", "t3"})},{Album("Aa", {"tx", "ty", "tz"})}} ));
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionfor(auto& auteur : Armoire)il fonctionne.
auteurmême en étant un objet devrait pouvoir être modifié, je rajoute que le programme ne crashait pas il ne faisait simplement pas
album.titres.push_back("nouveau titre");.