
Envoyé par
air-dex
Excellent dans le cadre de l'apprentissage de la STL. Et puis c'est bon pour ce qui est de ne pas réinventer la roue.
Je ne vois pas très bien en quoi écrire :
for(int i=0;i<sz;i++) fait_qqch(v[i]);
consiste davantage à réinventer la roue (ou est moins expressif que)
1 2 3 4 5 6 7
| for_each(v.begin()v.end(),op);
... (ailleurs dans le code, généralement loin)
struct faire_qqch {
void operator()(int i) {fait_qqch(i);}
} op; |
On pourrait également débattre sur la vertu de "ne pas réinventer la roue". Neuf fois sur dix, ce "précepte" veut dire : utiliser LA librairie que JE connais (tu citais Qt...), et prétendre que LA première solution au problème que j'ai trouvée est la seule possible.
Mon expérience, c'est qu'en général, le code devient bon à la deuxième ou troisième itération. Imposer à des étudiants l'idée que "réinventer la roue" est un péché mortel me parait un peu dangereux. (Je suis bien évidemment d'accord que ce n'est pas une excuse pour ne pas connaitre la STL, ou récrire sa classe string...)
Pour que l'idée soit bonne, il faudrait que
TOUS les développeurs C++ aient un très bon niveau en STL.
Pour bien utiliser la STL (ses algorithmes et ses conteneurs, tout au moins), il faudrait que les développeurs aient une bonne compréhension de l'algorithmique, et des garanties fournies par les différents conteneurs et algorithmes. On est loin du compte...
Francois
Partager