Liste chainee

FOADJOMETHUN -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour ????*

Comment insérer un élément d un vecteur vers une liste simplement chainee

Merci d'avance*

*Éléments de politesse ajoutés par la modération

1 réponse

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    En C++, std::forward_list est le conteneur qui implémente les listes simplement chaînées. Tu insères un élément d'un vecteur correspondant au type de la liste, avec les méthodes de cet objet std::forward_list, par exemple std::forward_list::push_front :

    #include <iostream>
    #include <vector>
    #include <string>
    #include <forward_list>
    
    int main()
    {
        // un vecteur
        std::vector<std::string> v {
            "mais", "où", "est",
            "donc", "or", "ni", "car"
        };
        // une liste simplement chaînée vide
        std::forward_list<std::string> fl;
        // on y copie l'élément d'indice 3 du vecteur
        fl.push_front(v[3]);
        // affichage du contenu de la liste simplement chaînée
        for (std::string& x: fl)
            std::cout << x << std::endl;
    
        return 0;
    }

    affiche l'unique élément de la liste : "donc"

    http://www.cplusplus.com/reference/forward_list/
    http://www.cplusplus.com/reference/forward_list/forward_list/
    http://www.cplusplus.com/reference/forward_list/forward_list/push_front/

    Dal
    0
    1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      et si tu veux que ta liste simplement chaînée contienne des références au lieu de copies, tu peux faire comme cela, avec un std::reference_wrapper :

      #include <iostream>
      #include <vector>
      #include <string>
      #include <functional>
      #include <forward_list>
      
      int main()
      {
          // un vecteur
          std::vector<std::string> v {
              "mais", "où", "est",
              "donc", "or", "ni", "car"
          };
          // une liste simplement chaînée vide encapsulant des références
          std::forward_list<std::reference_wrapper<std::string>> fl;
          // on y met l'élément d'indice 3 du vecteur
          fl.push_front(v[3]);
          // on altère le contenu de cet élément du vecteur d'origine
          v[3] = "DONC";
          // affichage du contenu de la liste simplement chaînée
          for (std::string& x: fl)
              std::cout << x << std::endl;
      
          return 0;
      }

      affiche l'unique élément de la liste qui accède à la référence de v[3] et affiche : "DONC"

      https://en.cppreference.com/w/cpp/utility/functional/reference_wrapper
      0