Partage
  • Partager sur Facebook
  • Partager sur Twitter

list<> - vector<>

Différences

Sujet résolu
    24 août 2007 à 13:24:58

    Bonjour, je crois que je le titre et sous-tires résument bien ma question :

    Pouvez-vous me dire quels sont les différences majeures entre une classe template list et une classe template vector ?

    Etant débutant dans le C++ et, logiquement, encore plus dans la STL, je me posais cette question car j'ai remarqué que les deux possédaient le même concept : Contenir un tableau d'un certain type (Avec les mêmes méthodes, push_back, pop_back, remove...).

    En clair quelles sont les grandes différences niveau codage et aussi niveau utilisation : Dans quels cas vaut-il mieux utiliser une list qu'un vector ? Car là, je l'avoues, pour moi list ~= vector.

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      24 août 2007 à 13:48:33

      Salut,

      t'as regardé ici ?
      • Partager sur Facebook
      • Partager sur Twitter
        24 août 2007 à 13:56:55

        Un vector est un tableau dynamique.
        Une list est une liste chaînée.

        Maintenant, je dirais que le plus souvent on utilise vector, car il a un accés direct en O(1) à un élément du tableau. Par contre l'insertion au milieu se fait en O(n).

        C'est le contraire pour la liste chainee.

        => Si tu dois souvent insérer des trucs au milieu, utilise une liste, sinon, utilise le vecto qui est plus approprié.

        De toute façon si c'est pour une petite applicaion,la différence ne se fera pas sentir.
        • Partager sur Facebook
        • Partager sur Twitter
        Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
          24 août 2007 à 14:13:04

          Merci pour le lien j'irais voir ça.

          Nanoc, donc pour l'instant je pense utiliser plus les listes. Mais c'est vrai que à ce stade, je pense que list et vector ne font pas grande différence pour moi.

          En clair savoir bien choisir entre les deux se fait lorsqu'on crée des programmes complexes ?
          • Partager sur Facebook
          • Partager sur Twitter
            24 août 2007 à 14:16:31

            Non, c'est pas ce que j'ai voulu dire.

            Je voulais dire que si tu n'as pas une application qui utilise énormément (c'est-à-dire plus de 10'000 par seconde) un vector ou une liste, tu ne verras pas la différence.
            Le temps d'exécution sera le même.

            Cependant, une bonne partie du travail en algorithmie est de choisir la bonne structure de donnée (tableau,liste,arbre,...)
            • Partager sur Facebook
            • Partager sur Twitter
            Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
              24 août 2007 à 14:18:43

              Ah d'accord je vois le truc.

              Ca dépend du programme en lui-même en fait.

              Bon je vais voir la FAQ alors.

              Merci à tous
              • Partager sur Facebook
              • Partager sur Twitter
                24 août 2007 à 14:22:41

                Oui.. enfin, c'est toujours mieux de s'habituer à utiliser les bons conteneurs. C'est sur qu'avec une dizaine d'objets, dans un petit programme en console, personne ne serait capable de déceler la différence de performance :p

                Par contre, si le PC doit se taper la réallocation d'un vector de 100 entrées à chaque frame dans un jeux, ca peut très rapidement devenir handicapant :)

                EDIT : tu peux aussi aller jeter un coup d'oeil ici : http://cpp.developpez.com/cours/cpp/?page=page_20#LXX-B
                • Partager sur Facebook
                • Partager sur Twitter
                Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
                  24 août 2007 à 17:12:19

                  Yep je vais essayer d'utiliser le meilleur conteneur. Je vois plus clair maintenant :)

                  Merci pour le lien. D'ailleurs ce cours (de C.Casteyde) m'a l'air très très complet. Je vais en lire un maximum ;)
                  • Partager sur Facebook
                  • Partager sur Twitter

                  list<> - vector<>

                  × 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