Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer l'index correspondant à find()

Si possible de std::vector< std::vector<> >...

Sujet résolu
    25 mai 2007 à 18:38:41

    Bonjour,

    Pour me détendre un peu durant mon projet, j'ai décidé de coder un petit jeu de bataille navale en C++. J'ai donc une classe Grid qui contient un std::vector< std::vector<Box*> >. Tout se passe dans ma méthode :
    void Grid::placeShip(ShipYard::Ship * const ship, const Grid::Vector &gridVector);

    gridVector contient la "case origine" du bateau, et son orientation.

    J'arrive au problème : je dois en effet trouver la "case origine" (de type Box*) dans ma grille, afin d'accéder aux cases adjacentes, selon l'orientation du bateau. Or, je ne vois pas comment faire... std::find() me procurerait un std::vector<>::iterator tout au plus, qui ne me serait qui plus est d'aucune utilité.

    J'ai pensé à récupérer son index (normal quoi :p ) avec une fonction de recherche perso, mais peut-être y a-t-il un meilleur moyen (que j'aimerais que vous communiquiez, si vous en avez un)?

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      25 mai 2007 à 18:42:35

      Tu fais la différence avec l'itérateur donné par begin().

      Mais sinon, pour accéder aux cases adjacentes, tu peux aussi faire +1, -1.
      • Partager sur Facebook
      • Partager sur Twitter
        25 mai 2007 à 18:58:44

        J'aurais fait la meme chose que Han Lee.

        Mais par contre j'aurai implementé un tableau de taille fixe et pas un vector<> puisque fondamentalement le "plan d'eau" en bataille navale est fixe. Mais c'est un détail d'implémentation
        • Partager sur Facebook
        • Partager sur Twitter
        Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
          25 mai 2007 à 19:13:22

          Pas bête, je n'y avais même pas pensé ^^

          Je vais essayer ça. Merci.
          • Partager sur Facebook
          • Partager sur Twitter
            25 mai 2007 à 23:09:46

            Ton élément peut stocker sa coordonnée. Sinon, de toutes façons, tu vas bien accéder à un élément grâce à une paire de coordoonées. De là, pour peux explorer les 4 cases adjacentes...
            • Partager sur Facebook
            • Partager sur Twitter
            C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.

            Récupérer l'index correspondant à find()

            × 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