c++ itérateur struct vecteur
J'ai créé une structure à deux champs de type Point3f
(qui est héritée d'un autre en-tête).
struct C_Cell {
Point3f min, max;
};
puis j'ai créé un vecteur de C_Cell
std::vector< C_Cell> grid;
et je l'ai remplie par grid.push_back(c)
où c
est un C_Cell
.
Maintenant, quand j'essaie d'itérer le vecteur, par le biais de
for (std::vector<C_Cell>::iterator it = grid.begin() ; it != grid.end(); ++it)
pendant le débogage, le type n'est pas C_Cell
mais Point3f
, qui est le type du champ, en outre vide.
Comment puis-je effectuer une itération correctement, de manière à obtenir un seul élément de type C_Cell
?
Merci ( et désolé pour mon anglais! 🙂 )
Votre titre est un ensemble de balises. À peu près sans valeur, et peu de gens auront pris la peine avec elle, puisque vous n'avez pas pris le temps de poser votre question. Vous devez utiliser le titre pour résumer votre question ou problème.
bon... vous avez raison. désolé et merci
Premier résultat dans Google pour mes recherches "rpc vecteur itérateur struct".
bon... vous avez raison. désolé et merci
Premier résultat dans Google pour mes recherches "rpc vecteur itérateur struct".
OriginalL'auteur Mau | 2014-12-20
Vous devez vous connecter pour publier un commentaire.
Vous avez déréférencer l'itérateur et de l'utiliser comme
ou
ou, sans de-de référencement,
Le type de la déréférencé itérateur
(*it)
DEVRAIT êtreC_Cell
, que c'est la façon dont les itérateurs de travail, leuroperator*
renvoie une référence à un objet du type sous-jacent du conteneur. Les itérateurs se comportent tout à fait comme des pointeurs (bien qu'ils ne sont pas des pointeurs, mais des classes de proxy), vous pouvez incrémenter/déréférencement etc.a le type
Point3f
, comme vous le point à l'intérieur de la structure. Ma conjecture est que vous n'avez pas initialiser la structure avant de le pousser en arrière dans le vecteur. Assurez-vous que avant depush_back(c)
,c
est initialisée de la structure.bien sûr, c est initialisé avant de le pousser dans le vecteur !!!!
puis juste essayer de poster un minimum de compilable exemple, à partir de votre code il n'y a aucun moyen de dire quoi d'autre qui pourrait aller mal. Pouvez-vous au moins par exemple
cout << (it->min).member
lignes à l'intérieur de lafor
et de voir ce qui est imprimé au moment de l'exécution?OriginalL'auteur vsoftco