Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1135 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [débutant] iterateur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[débutant] iterateur

n°1945693
singletonn​e
Posté le 29-11-2009 à 17:10:12  profilanswer
 

Hello,
 
Je débute en C++, après un lavage de cerveau avec Java... voici donc ma question :
 
En Java, on a un truc bien pratique qui est le Iterator<Maclasse>, et j'ai vu qu'en c++, on a aussi des "iterator".
Ce que je ne comprends pas, c'est comment les utiliser comme je veux.
 
Exemple : je veux un constructeur de classe A qui prend en paramètre tout plein d'objets de la classe B, en nombre indéfini.
Pour faire ça de façon jolie, j'aimerais proposer un constructeur avec en paramètre un itérateur sur des objets de la classe B (je ne veux pas savoir si l'utilisateur stocke ses objets dans un vector, list, deque, etc).
Seulement, j'ai bien l'impression que je ne peux pas, et que ça ne marche pas du tout comme ça...
 
Une idée ? Une solution de remplacement ?
 
Merci beaucoup !

mood
Publicité
Posté le 29-11-2009 à 17:10:12  profilanswer
 

n°1945756
erikkarls
Posté le 30-11-2009 à 01:15:25  profilanswer
 

Si tu veux que le type du conteneur dans ta classe A qui stocke les objets de la classe B reste masqué, tu ne pourras pas utiliser directement un itérateur comme ceux de la STL du c++ (à moins de bricoler avec la généricité mais si tu commences ca risque d'être compliqué).
 
Si tu veux le programmer toi-même tu as deux possbilités grosso-modo :
1. Tu as par exemple un integer dans ta classe A qui te permet de connaitre ton B "courant". Tu as une méthode d'initialisation qui met cette variable a 0 et une methode du genre "get" qui renvoie le prochain B et incrémente ton entier.
2. Tu peux aussi faire toi-même une classe itérateur. Tu peux par exemple créer une classe iterator_B qui fait la même chose que dans le premier cas mais de facon externe. Ce sera "plus propre" car l'itérateur sera un objet en soi, qui se gère tout seul et qui ne dépend plus de A.


Message édité par erikkarls le 30-11-2009 à 01:17:24
n°1948280
Lan Wezel
Posté le 08-12-2009 à 10:45:33  profilanswer
 

Si je ne me trompe pas ton problème est surtout de ne pas être dépendant de la structure de l'utilisateur.
Dans ce cas là, il est possible d'encapsuler ton container et de n'utiliser que cette encapsulation :
 

Code :
  1. // Côté client
  2. class BContainer : public std::vector<A>{};
  3. // De ton côté
  4. class A{
  5. A(BContainer::iterator it){...}
  6. };


 
Normalement cela fonctionne.
De cette manière le client peut changer le type de container qd il veut de manière transparente.


Message édité par Lan Wezel le 08-12-2009 à 10:46:27

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [débutant] iterateur

 

Sujets relatifs
(DEBUTANT) Probleme de classe en c++AS3 : débutant dérouté
Quizz debutant VBADebutant Struts2 - Eclipse for Java EE ou Lomboz ?
[debutant] sript pour renseigner un base putty .reg[vba excel debutant] creer 1 programme en boucle
Probleme debutant sql[RESOLU]Debutant en C++, petite question a propos d'un programme
Quel livre débutant?(Débutant) move_uploaded_file
Plus de sujets relatifs à : [débutant] iterateur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR