J'ai une classe appelée Writer
qui a une fonction writeVector
comme ceci:
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 me souciant des performances. Dans la fonction, je if (index)
vérifie à chaque tour de ma for
boucle, même si le résultat est toujours le même. C'est contre "s'inquiéter de la performance".
Je pourrais facilement éviter cela en plaçant le chèque en dehors de ma for
boucle. Cependant, j'obtiendrai beaucoup 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 deux «mauvaises» solutions pour moi. Ce que j'ai pensé, ce sont deux fonctions privées, l'une d'elles sort de l'index et appelle l'autre. L'autre dépasse seulement la valeur. Cependant, je ne peux pas comprendre comment l'utiliser avec mon programme, j'aurais quand même besoin de la if
vérification pour voir lequel appeler ...
Selon le problème, le polymorphisme semble être une solution correcte. Mais je ne vois pas comment l'utiliser ici. Quelle serait la meilleure façon de résoudre ce genre de problème?
Ce n'est pas un vrai programme, je suis juste intéressé à apprendre comment ce genre de problème devrait être résolu.