Bonjour,
Ca fait des heures que je suis sur mon problème, j'ai beaucoup cherché, mais je n'arrive pas à le résoudre.. (c'est sûrement évident, pourtant!)
Je dois lire un fichier qui se présente sous une forme de matrice. Les valeurs d'une ligne correspondent aux caractéristiques d'un individu, en fait (une classe Sample est implémentée pour le décrire)
J'ai donc créé une classe ReadingFile, dont l'objet est appelé depuis mon main et ReadingFile crée autant d'individus qu'il y a de lignes.
Dans ReadingFile.cpp, je lis chaque ligne et place les valeurs dans un vecteur, un vecteur me permet alors de créer un individu.
Cependant, si je ne mets pas les vecteurs en attribut de ma classe ReadingFile, les listes de descripteurs de mes individus sont perdues. Mais je ne peux pas prévoir le nombre de vecteurs dont j'aurai besoin, il faut donc que je les crée dynamiquement.
Si j'utilise le même vecteur pour tous les individus, je vais me retrouver avec des individus ayant tous la même liste de descripteurs.
sachant que descList c'est:
vector<Descriptor*> descList;
Mon petit bout de code c'est:
for(...) {/// tant qu'il y a des lignes à lire
for(auto incr: descValues){ // ici je lis terme à terme chaque ligne
descList.push_back(readDescriptor(incr, descName[wordCount], linesCount)); // je traite le type de donnée que j'ai et j'ajoute le descripteur dans la liste
sstm << sampleCount; // c'est le numéro de mon individu
}
Sample* sample= new Sample(sstm.str(), catList, descList, precision);
samplesList.push_back(sample);
sampleCount++;
}
//////////////////////////////////////////
Ca ne peut pas marcher parce qu'alors ma liste ne fait que s'allonger et je me retrouver avec un vecteur aussi grand que la dimension de la matrice.
J'ai pensé à utiliser un vecteur de vecteur:
vector<vector<Descriptor*>> totalDescList;
Ce qui me donnerait ce code:
for(...){
for(auto incr: descValues){
descList.push_back(readDescriptor(incr, descName[wordCount], linesCount));
wordCount++;
sstm << sampleCount;
}
totalDescList.push_back(?); <- comment y stocker le petit bout de descList que je veux?
Sample* sample= new Sample(sstm.str(), catList, totalDescList[sampleCount-1]), precision);
samplesList.push_back(sample);
sampleCount++;
}
Mais je ne vois pas comment récupérer juste le petit bout de descList qui me concerne pour le stocker dans totalDescList...
Désolée pour la longueur, en tous cas j'espère que je suis claire!
Merci d'avance, parce que vraiment, je n'en peux plus là...!