J'ai une classe appelée Writer
qui a une fonction writeVector
comme:
void Drawer::writeVector(vector<T> vec, bool index=true)
{
for (unsigned int i = 0; i < vec.size(); i++) {
if (index) {
cout << i << "\t";
}
cout << vec[i] << "\n";
}
}
J'essaie de ne pas avoir de code en double, tout en continuant de se soucier de la performance.
Dans la fonction, je suis en train de faire l' if (index)
vérifier sur chaque rond de mon for
-boucle, même si le résultat est toujours le même.
C'est à l'encontre de "se soucier de la performance".
J'ai facilement pu éviter cela en plaçant le vérifier à l'extérieur de mon for
-boucle.
Cependant, je vais obtenir des charges de code en double:
void Drawer::writeVector(...)
{
if (index) {
for (...) {
cout << i << "\t" << vec[i] << "\n";
}
}
else {
for (...) {
cout << vec[i] << "\n";
}
}
}
Ce sont donc ces deux "mauvaises" solutions pour moi.
Ce que j'ai pensé, est privé de deux fonctions, l'une d'entre eux les aboutissants de l'index, puis appelle les autres.
Les autres on ne les aboutissants de la valeur.
Cependant, je ne peux pas comprendre comment l'utiliser dans mon programme, j'avais encore besoin de l' if
vérifier pour voir un...
Selon le problème, le polymorphisme semble être une bonne solution. Mais je ne vois pas comment l'utiliser ici. Ce qui serait la meilleure façon de résoudre ce genre de problème?
Ce n'est pas un vrai programme, je suis simplement intéressé à apprendre comment ce genre de problème devrait être résolu.