Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer un tableau vector<tuple>, accéder valeurs

    20 janvier 2019 à 20:29:26

    J'essaye en ce moment de créer un tableau qui me permettra d'accéder à une variable à partir de 2 autres variable.

    Pour cela, j'ai pensé à créer un tableau vector avec le type tuple.

    Voici le code que j'ai écrit:

        using tuple_t = std::tuple <int, int, int>;
        std::vector <tuple_t> v;
        v.push_back({1,2,3});
        v.push_back({4,5,6});
        std::cout << v[0] << std::endl;

    Je peux accéder aux variables tuple mais je ne sais pas comment je pourrais accéder aux variables contenu d'une variable tuple sélectionnée, ici la variable [0], qui contient {1,2,3}.

    Merci d'avance !

    • Partager sur Facebook
    • Partager sur Twitter
      20 janvier 2019 à 20:50:15

      [std::get])https://en.cppreference.com/w/cpp/utility/tuple/get). Mais un tuple qui possède tous les éléments du même type ressemble plus à un tableau (std::array).

      -
      Edité par jo_link_noir 20 janvier 2019 à 20:50:53

      • Partager sur Facebook
      • Partager sur Twitter
        21 janvier 2019 à 9:21:03

        Depuis C++17 tu peux les déstructurer de manière conviviale avec les structured bindings.

        // x, y, z sont trois variables de type int.
        auto [x, y, z] = v[0];
        
        std::cout << x << std::endl;
        std::cout << y << std::endl;
        std::cout << z << std::endl;
        





        -
        Edité par markand 21 janvier 2019 à 9:22:13

        • Partager sur Facebook
        • Partager sur Twitter

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

          21 janvier 2019 à 17:06:36

          jo_link_noir a écrit:

          [std::get])https://en.cppreference.com/w/cpp/utility/tuple/get). Mais un tuple qui possède tous les éléments du même type ressemble plus à un tableau (std::array).

          -
          Edité par jo_link_noir il y a environ 19 heures


          J'ai réessayé avec std::aray et std::get (std::get<> fonctionne aussi pour array https://fr.cppreference.com/w/cpp/container/array/get )

          ça ne fonctionne pas, enfin je ne sais pas comment l'écrire.

              using ar = std::array <int, 4>;
              std::vector <ar> v;
              v.push_back({1 , 2 , 3});
              std::cout << v[0, std::get<0>]<< std::endl;

          J'ai essayé plusieurs façon, dont celle là et ça ne marche pas, j'ai aussi essayé de mettre un [0] à la place de std::get, ça ne marche pas également.

          markand a écrit:

          Depuis C++17 tu peux les déstructurer de manière conviviale avec les structured bindings.

          // x, y, z sont trois variables de type int.
          auto [x, y, z] = v[0];
          
          std::cout << x << std::endl;
          std::cout << y << std::endl;
          std::cout << z << std::endl;
          



          J'ai un peu de mal avec la documentation en anglais (je sais, c'est très problématique pour quelqu'un voulant apprendre le c++).

          J'arrive pas à comprendre comment ça fonctionne.

          Merci de vos réponses !



          • Partager sur Facebook
          • Partager sur Twitter
            21 janvier 2019 à 17:16:39

            ungarssuryoutube a écrit:

                using ar = std::array <int, 4>;
                std::vector <ar> v;
                v.push_back({1 , 2 , 3});
                std::cout << v[0, std::get<0>]<< std::endl;

            Heu ...

            Pourquoi faire simple quand on peut faire compliqué (surtout quand le compliqué ne fonctionne pas) ?
            Chaque élément de vector te renvoient un array<int, 4>, et tous deux supportent l'opérateur [].
            Donc ca se comporte comme un tableau 2D:

            std::cout << v[0][0]<< std::endl;
            Ou si tu tiens vraiment à utiliser std::get:
            std::cout << std::get<0>(v[0]) << std::endl;
            Perso, il y a une version que je préfère.
            • Partager sur Facebook
            • Partager sur Twitter
              21 janvier 2019 à 20:20:40

              MEEERCIIIIIIIIII ! ça marche enfin....

              • Partager sur Facebook
              • Partager sur Twitter

              Créer un tableau vector<tuple>, accéder valeurs

              × 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