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

 C++ Discussion :

Question sur une liste de donnée persistente ?


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut Question sur une liste de donnée persistente ?
    Bonjour,
    Je suis confrontée un problème.
    Je souhaiterai créer une liste de données persistantes en mémoire ayant taille évolutive.
    J'avais pensée à créer une liste doublement chainée en c++. Mais je n'arrive pas à accéder
    à une case de donnée mémorielle cible, puisque je suis obligée de parcourir toute la liste
    d'éléments via leur pointeur respectif,soit en partant soit du début ou de la fin.
    La liste doublement chainée n'est pas contiguës car le contenu est éparpillé dans la mémoire.
    A l'inverse un tableau ou un "vector" simple est contigus en mémoire.

    Ma question peut on créer une liste de données persistante qui a les mêmes attribue qu'un "vector" ou un tableau ?

    J'avais pensé faire un "static vector" mais cela plante.

    Si oui avez un tutoriel ou un exemple de code en c++ !!!

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Et pourquoi ne pas juste utiliser un vector ?
    Sinon tu peux toujours utiliser ton propre allocateur avec std::list.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    Citation Envoyé par carmen256 Voir le message
    Ma question peut on créer une liste de données persistante qui a les mêmes attribue qu'un "vector" ou un tableau ?
    Il faudrait indiquer quelles sont les propriétés de la liste que tu veux garder. Dans immédiate, le seul avantage est qu'une liste qui alloue de nouveau élément n'invalide pas les références sur les éléments déjà existant. Avoir cette propriété + une mémoire continue ré-allouable n'est pas possible à moins:

    - de connaître à l'avance la taille max de la séquence et alors utiliser une liste ne sert à rien
    - ou de ne pas utiliser des références, mais conserver la position dans la séquence (ce qui cause des problèmes lorsqu'on enlève des éléments)

    Selon le besoin, il peut être intéressant d'avoir une liste de tableau de taille fixe ou variable. Le parcours de la liste se fait de groupe en groupe qui est plus rapide qu'élément par élément. On peut aussi garder certaines propriétés de la liste en autorisant des trous dans les tableaux.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut Tentative avec une class Liste
    Je viens de tenter de faire une liste persistante avec une class Liste.
    Cela se compile sans erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    #include <iostream>
    #include <vector>
    #include <string>
    #include <list>
     
    using std::cout;
    using std::endl;
    using std::vector;
    using std::string;
     
    class Liste{
           Public : 
                     Liste(){}
                     Liste(int s):MaListe(new int[s]){
                          for(int i=0;i<s;++i){
                                MaListe[i]=0;
                          }/*fin du for*/
                     }/*fin de la liste*/
                     ~Liste(){
                          delete[] MaListe;
                     }/*Effacement de la liste*/
           Private :
                     double *MaListe;
    };
     
    int main(){
           Liste** MaListeArray = new Liste*[5];/*Liste de 5 cases memoires*/
           for(int i=0;i<5;++i){
                MaListeArray[i] = new Liste();
           }/*fin du for : remplissage de liste*/
     
           for(int i=0;i<4;++i){
               delete MaListeArray[i];
           }/*fin du for :effacement mémoriel*/
     
           delete[] MaListeArray;/*Effacement de la liste*/
     
    }/*fin du main*/
    J'ai tenté de faire afficher le contenu de la liste en ajoutant les 2 lignes.
    Mais j'ai une erreur de compilation.
    error C2440: 'initilizing': cannot convert 'Liste *' to 'double'
    j'ai essayé avec auto c'est pareil.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    #include <iostream>
    #include <vector>
    #include <string>
    #include <list>
     
    using std::cout;
    using std::endl;
    using std::vector;
    using std::string;
     
    class Liste{
           Public : 
                     Liste(){}
                     Liste(int s):MaListe(new int[s]){
                          for(int i=0;i<s;++i){
                                MaListe[i]=0;
                          }/*fin du for*
                     }/*fin de la liste*/
                     ~Liste(){
                          delete[] MaListe;
                     }/*Effacement de la liste*/
           Private :
                     double *MaListe;
    };
     
    int main(){
           Liste** MaListeArray = new Liste*[5];/*Liste de 5 cases memoires*/
           for(int i=0;i<5;++i){
                MaListeArray[i] = new Liste();
                double Val = MyListeArray[i];
                cout << Val << endl;
           }/*fin du for : remplissage de liste*/
     
           for(int i=0;i<4;++i){
               delete MaListeArray[i];
           }/*fin du for :effacement mémoriel*/
     
           delete[] MaListeArray;/*Effacement de la liste*/
     
    }/*fin du main*/

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut reponse
    ah je viens juste de voir ton message après que j'ai fini de rédiger le mien
    jo_link_noir

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Tous ces new et delete sont effrayants. En plus d'être mal utilisés.
    Tu es sûr de comprendre les termes que tu utilises ? Liste** MaListeArray = new Liste*[5];/*Liste de 5 cases memoires*/
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Tri sur une base de donnée avec une list box
    Par niamo dans le forum IHM
    Réponses: 5
    Dernier message: 26/05/2010, 12h07
  2. Réponses: 1
    Dernier message: 04/06/2008, 09h57
  3. Ajout donnée sur une liste
    Par zeralium dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/05/2008, 22h49
  4. Question sur la sélection de donnée dans une base
    Par Masmeta dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/04/2008, 16h16
  5. [phpMyAdmin] question sur une ligne à ajouter à ma base de données
    Par jsdar dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 14/04/2007, 11h13

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