Bonjour à tous,
Je suis en train de faire évoluer la structure d'un ancien programme. Pour des raisons pratiques, je remplace mon std::vector<int, int> par :
Pour faire simple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::map <int, Point> tableau_points_;
- un tableau_points est associé à une image
- chaque Point doit avoir un "marqueur" (clé) fixe, car un autre Point lui est associé dans une autre image, qui possédera lui-même le même marqueur.
Comment faire pour donner une bonne encapsulation à cette map?
Mise en évidence du problème du client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 class PointDeControle { typedef Point<int> Point; public: PointDeControle(); void ajouterPoint(Point & point); void supprimerPoint(Point &); int getSize(void) { return tableau_points_.count() } std::pair<int, Point> getPoint( int numero_point); // Comment faire mieux??? int getCle(Point & point); private: std::map <int, Point> tableau_points_; std::vector <int> cle_supprime_; // sauvegarde des clés supprimées pour les réinsérer ensuite };
- Ajout de 10 points par clé croissante (1,2,3,4,5,6,7,8,9,10).
- Suppression des points 4 et 5
- getPoint() ???? Comment savoir quelle clé est valide?
La fonctionpermet au client de boucler sur tous les points:
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::pair<int, Point> getPoint( int numero_point)
Ce code vous parait-il pourri? bien?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for (int i = 0; i < point.getSize(); i++) { getPoint(i); // on récupère le point }
Vaut-mieux fournir un itérateur au client?
Merci pour votre aide précieuse !![]()
Partager