Est ce que quelqu'un connaitrais le contraire de la méthode push_back. Je doit faire un jeux avec deux armee et dans la méthode attaquer je doit supprimer des soldats quand l'autre armee les attaques;
Voici la méthode que je doit modifier:
void Armee::attaquer()
{
for (int i=0;i<=5;i++)
{
Officier *nvxOfficier;
nvxOfficier = new Officier;
listO->push_back(*nvxOfficier);
}
cout << "Le nombre d'officier est de :" << listO << endl;
}
Ton code contient déjà un memory leak. Si tu es entrain de suivre le cours C++ du site, je t'invite fortement à oublier tout ce que tu y as appris et passer à un vrai cours sûr et moderne.
git is great because Linus did it, mercurial is better because he didn't.
Une première règle à connaître c'est : on n'utilise jamais jamaisnew. C'est vrai que le cours d'openclassroom oublie de préciser cette règle simple. Il y a des tas de moyen d'allouer des objets de manière sécure. Supposons que tu ne connaisses pas la première règle. Un objet créé par new doit être conservé dans un pointeur (ici nvxOfficier) et on doit ne surtout jamais jamais perdre la valeur de ce pointeur car il sera nécessaire au moment du delete. Dans ton cas la valeur est perdue 6 fois! En supposant que list0 contienne des Officier (sinon ton code n'aurait aucun sens), le code équivalent serait:
for (int i=0;i<=5;i++)
{
listO->emplace_back(); // ajoute un nouvel élément construit par défaut au bout du container
}
Bien plus simple et sans "memory leak".
Pour revenir à ta question : c'est quoi l'inverse de push_back() ? Qu'entends-tu par inverse? Ça peut être : push_font(objet) ou emplace_font(paramètres) pour insérer au début à l'inverse de la fin. Ça peut être : pop_back() pour ôter à l'inverse d'insérer un élément à la fin.
Un std::vector<> n'aime pas beaucoup ajouter/enlever des éléments ailleurs qu'à la fin (il le peut mais ça n'est pas optimum). On peut insérer de partout, mais il ne fournit que les fonctions simples push_back(objet), emplace_back(paramètres) et pop_back(). Pour avoir les autres, il est peut-être préférable d'utiliser le container std::deque<> accessible par #include <deque>. Lui dispose de fonctions simple pour agir sur le début ou la fin.
En recherche d'emploi.
Contraire de la méthode push_back
× 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.
git is great because Linus did it, mercurial is better because he didn't.
En recherche d'emploi.