CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[c++] lecture d'un vector

leolio24
leolio24
Niveau 9
05 mai 2009 à 20:37:47

Bonjour,
Je travaille actuellement sur un projet où il me faut manipuler un vector qui contient un Objet. Cet Objet (nommé Contig) contient lui : une map<string, AutreObjet> et un string.

Dans mon programme principal, voici ce que je fait :

  1. include <iostream>
  2. include <vector>

using namespace std;

  1. include "contig.h"

vector<Contig> vc;

void printVector();

int main(void) {
Contig c1("sample1", 0, 'r', "ATGGAATCG", "24 32 12 27 40 -3 20 11 9");
Contig c2("sample2", 0, 'r', "ATG", "23 7 17");
Contig c3("sample3", 0, 'r', "GAA", "25 15 15");
Contig c4("sample4", 0, 'r', "ATCG", "-5 3 3 6");

vc.begin();
vc.push_back(c1);
vc.push_back(c2);
vc.push_back(c3);
vc.push_back(c4);

c1.printMap();
c2.printMap();
c3.printMap();
c4.printMap();

printVector();

return EXIT_SUCCESS;
}

void printVector() {
cout << "print vector " << endl;
int i;
for(i=0; i<vc.size(); i++) {
vc[i].dpDirection_string();
}
cout << "i "<<i<<endl;
}

La fonction associé au vector vc dans void printVector() (donc la fonction dpDirection_string() ) est simplement une fonction pour afficher le string de mon Contig.

Mon probleme est donc que je n'affiche rien du tout, et comme je n'ai pas une grande habitude pour manier les vector je suis un peu perdu...

Merci d'avance pour votre aide.

dnob700
dnob700
Niveau 10
05 mai 2009 à 20:52:56

Post la fonction .dpDirection_string, ce que tu montre ici devrait fonctionner.

leolio24
leolio24
Niveau 9
05 mai 2009 à 21:01:41

J'ai testé cette fonction dpDirection_string() qui fonctionne a priori, mais la voici quand meme:

char Contig::dpDirection_string() { return dp.direction_string(); }

c'est donc un simple accesseur a mes données.
NB: le dp, c'est un autre objet qui lui ne contient qu'un char et un int. c'est l'objet qui se trouve dans ma map : map<string, Dirpos> (c'est le Dirpos, vous l'aurez compris^^).

mais meme quand j'utilise cet accesseur:
string Contig::nametoString() {
return name;
}
C'est a dire un truc basique...je n'ai toujours aucuns résultats...

godrik
godrik
Niveau 30
05 mai 2009 à 21:52:43

Plusieurs choses:

tu n'as pas besoin de vc.begin(); dans main.
la fonction begin est seulement utile pour lister tous les objets un par un.

La fonction Contig::dpDirection_string() n'ecrit rien sur std::cout. Et tu n'ecris pas ce qu'elle renvoie non plus. Donc ca me parait normal que rien ne s'affiche a l'ecran.

le prototype de cette fonction est etrange : char Contig::dpDirection_string(); Je pense que le type de retour devrait etre char* ou pour faire c++ std::string

leolio24
leolio24
Niveau 9
05 mai 2009 à 22:08:54

Ca marche!
Ca fait desfois du bien de se faire relire par quelqu'un d'exterieur, a la fin on ne voit meme plus ses erreurs les plus bêtes...et celle ci est bien bête!!
je sais meme pas pourquoi j'ai pas mis de std::cout...j'ai fait de multiples tests et j'ai dû oublier de le remettre...quelle erreur!

Pour le vc.begin(), je l'ai en effet enlevé apres avoir poster mon code, pas utile.

Pour le prototype de la fonction, étant donné qu'elle ne renvois qu'un seul char, pas necessaire de mettre un std::string en retour, non?
direction ne contient qu'un char 'r' ou 'v'.

Bon en tout cas, merci beaucoup!
Bonne soirée!

leolio24
leolio24
Niveau 9
05 mai 2009 à 22:11:25

@godrik: Bon aprem pour toi, j'viens de voir ta carte de visite, j'suis moi aussi dans l'ohio en ce moment^^

Voila, desolé de ce message inutile!

godrik
godrik
Niveau 30
05 mai 2009 à 22:57:45

"Pour le prototype de la fonction, étant donné qu'elle ne renvois qu'un seul char, pas necessaire de mettre un std::string en retour, non?"
Oh, si elle ne renvoye qu'un seul caractere en effet, ce n'est pas utile. retourner char est suffisant. comme la fonction s'appellait dpDirection_string, j'ai penser qu'il y avait plus d'un caractere a retourner.

"@godrik: Bon aprem pour toi, j'viens de voir ta carte de visite, j'suis moi aussi dans l'ohio en ce moment^^ "
Et oui, ca n'arrive pas qu'aux autre de se retrouver paume en plein mid west :)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment