Liste chainee

Fermé
FOADJOMETHUN - Modifié le 24 janv. 2019 à 23:47
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 25 janv. 2019 à 00:22
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

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 24 janv. 2019 à 23:53
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
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 25 janv. 2019 à 00:29
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