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++ !!!
Tentative avec une class Liste
Je viens de tenter de faire une liste persistante avec une class Liste.
Cela se compile sans erreur.
Code:
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.
Citation:
error C2440: 'initilizing': cannot convert 'Liste *' to 'double'
j'ai essayé avec auto c'est pareil.
Code:
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*/ |