IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

QList versus QVector ?


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut QList versus QVector ?
    Salut à tous, j'aimerais savoir quelles sont les différences entre les deux conteneurs personnalisé de Qt : QList, et QVector.

    J'aimerais aussi savoir, si il existe une classe (pas nécessairement Template) dans Qt, permettant de manipuler les données dans comme dans un tableau 2D. Dans le cas contraire, quel est la classe entre les deux précédentes, le plus adapté pour ce cas de figure. Merci à vous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    typedef QList< QList< T > > Table2DOfType;
    typedef QVector< QVector< T > > Table2DOfType;

  2. #2
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    La définition de la doc te suffit pas ?

    Citation Envoyé par Doc Qt
    QVector<T> is one of Qt's generic container classes. It stores its items in adjacent memory locations and provides fast index-based access.

    QList<T>, QLinkedList<T>, and QVarLengthArray<T> provide similar functionality. Here's an overview:

    * For most purposes, QList is the right class to use. Operations like prepend() and insert() are usually faster than with QVector because of the way QList stores its items in memory (see Algorithmic Complexity for details), and its index-based API is more convenient than QLinkedList's iterator-based API. It also expands to less code in your executable.
    * If you need a real linked list, with guarantees of constant time insertions in the middle of the list and iterators to items rather than indexes, use QLinkedList.
    * If you want the items to occupy adjacent memory positions, or if your items are larger than a pointer and you want to avoid the overhead of allocating them on the heap individually at insertion time, then use QVector.
    * If you want a low-level variable-size array, QVarLengthArray may be sufficient.

  3. #3
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 33
    Par défaut
    Salut,
    voici un extrait de la documentation de QList tiré du DOC QT4.6:
    For most purposes, QList is the right class to use. Its index-based API is more convenient than QLinkedList's iterator-based API, and it is usually faster than QVector because of the way it stores its items in memory. It also expands to less code in your executable.
    ...si tu as bien compris,QList est plus générale dans tous les cas et plus rapide que QVector...
    a propos d'autres classes similaire aux tableaux 2D ,il existe QVarLengthArray pour les tableaux à taille faible et variable,mais il utilise les templates...
    j'éspére que ça va t'aider!

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Abdelite Voir le message
    Dans le cas contraire, quel est la classe entre les deux précédentes, le plus adapté pour ce cas de figure.
    aucune des deux....
    Si c'est un tableau 2D, c'est que chaque ligne à la même taille.
    Il est beaucoup plus intéressant (et sûr) de faire un tableau 1D et de jouer sur le id

    QVarLengthArray est un tableau 1D.

  5. #5
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 33
    Par défaut
    Ah oui,désolé,QVarLengthArray est un tableau 1D pas 2D...j'ai commit une faute
    d'orthographe!

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Ou tu fais une QList<QList<int>> de taille 2, avec la liste une pour les "x", et la liste 2 pour les "y".

    Sinon, il me semble que ça existe dans Qwt, tu peux regarder comment ils ont fait.
    EDIT : Dans Qwt, en fait, il y a juste une classe avec deux QVector membre.

    G.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Merci pour vos réponses, pour le tableau 2D, je peux faire comme Qwt mais au lieu d'utiliser des QVector, j'utilise des QList, qui sont un peu plus rapide. Ça peux sembler correct, quels sont vos avis ?

  8. #8
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut

    qu'es ce que tu appel un tableau2D au finale??

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débat] MERISE versus UML ? Avenir de MERISE ?
    Par Matthieu Brucher dans le forum Méthodes
    Réponses: 51
    Dernier message: 15/02/2022, 17h32
  2. C# versus Java
    Par laffreuxthomas dans le forum C#
    Réponses: 368
    Dernier message: 30/03/2019, 22h59
  3. QVector, QList, std::vector
    Par palador dans le forum Débuter
    Réponses: 2
    Dernier message: 12/10/2012, 23h54
  4. Utilisation de QList ou de QVector pour un Sudoku ?
    Par mrdus dans le forum Débuter
    Réponses: 6
    Dernier message: 13/05/2010, 15h00
  5. Que choisir : PHP versus Java ?
    Par Sniper37 dans le forum Général Conception Web
    Réponses: 164
    Dernier message: 28/04/2009, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo