Partage
  • Partager sur Facebook
  • Partager sur Twitter

Contraire de la méthode push_back

Sujet résolu
    15 janvier 2021 à 9:47:15

    Bonjour,

    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;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      15 janvier 2021 à 10:01:56

      Tu devrais trouver ton bonheur ici: https://en.cppreference.com/w/cpp/container/vector
      • Partager sur Facebook
      • Partager sur Twitter
        15 janvier 2021 à 10:36:22

        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.

        • Partager sur Facebook
        • Partager sur Twitter

        git is great because Linus did it, mercurial is better because he didn't.

          20 janvier 2021 à 2:58:29

          Si tu as besoin d'inserrer des element au début, je ne croit pas que std::vector soit le plus approprié.

          C++ propose une bonne variété de conteneurs, en voici la liste:
          Containers library - cppreference.com

          • Partager sur Facebook
          • Partager sur Twitter
            15 février 2021 à 18:58:50

            Bonjour,

            @markand tu aurais des formations particulières à conseiller ?

            Merci :)

            • Partager sur Facebook
            • Partager sur Twitter
            « L'ordre mon cul, la liberté m'habite ! »
              15 février 2021 à 20:34:53

              Bonjour,

              Une première règle à connaître c'est : on n'utilise jamais jamais new. 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.

              • Partager sur Facebook
              • Partager sur Twitter

              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.
              • Editeur
              • Markdown