Partage
  • Partager sur Facebook
  • Partager sur Twitter

Copie 1 élément sur 4 d'un vecteur sans boucle.

    6 août 2020 à 15:28:55

    Bonjour,

    Je travail sur un portage d'un code entre MATLAB et le C++ je me demandais s'il existé une méthode pour copier un élément sur 4 d'un vecteur en C++ sans avoir recours à une boucle. (J'ai pensé à un copy_if mais pas sûr) Avec MATLAB cela prend cette forme COPIE = TABLEAU(début:4:fin).

    Cordialement,

    • Partager sur Facebook
    • Partager sur Twitter
      6 août 2020 à 18:40:54

      Peut-être un truc dans ce genre :

      #include<iostream>
      #include<vector>
      #include <algorithm>
      
      int main()
      {
          std::vector<int> src = {1,2,3,4,5,6,7,8};
          std::vector<int> dest;
      
          std::copy_if(src.begin(), src.end(), std::back_inserter(dest),
                                              [n=0](int)mutable{n++; return n%4==1;});
      
          for (auto elem : dest) std::cout << elem << "   ";
          std::cout << std::endl;
      }

      Je ne suis pas certain que ce soit très efficace par rapport à une boucle.

      • Partager sur Facebook
      • Partager sur Twitter
        6 août 2020 à 19:21:18

        Je crois qu'il y a des notions de slices dans les ranges v3. Et peut-etre aussi dans mdspan (C++20 ou 23).

        Sinon... boucle, oui.

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

        Copie 1 élément sur 4 d'un vecteur sans boucle.

        × 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