Empecé a usar contenedores STL porque me resultaron muy útiles cuando necesitaba la funcionalidad de una lista, un conjunto y un mapa, y no tenía nada más disponible en mi entorno de programación. No me importaron mucho las ideas detrás de esto. La documentación de STL era interesante hasta el punto de que se trataba de funciones, etc. Luego me salté la lectura y simplemente usé los contenedores.¿Cómo se usan las funciones de stl como for_each?
Pero ayer, todavía relajado por mis vacaciones, lo probé y quería ir un poco más de camino. Así que utilicé la función de transformación (¿puedo aplaudir un poco, gracias?).
Desde un punto de vista académico realmente se veía interesante y funcionó. Pero lo que me molesta es que si intensificas el uso de esas funciones, necesitas miles de clases de ayuda para la mayoría de las cosas que quieres hacer en tu código. Toda la lógica del programa está dividida en pedacitos. Este corte no es el resultado de buenos hábitos de codificación; es solo una necesidad técnica. Algo, eso hace que mi vida probablemente sea más difícil, no más fácil.
Aprendí de la manera difícil, que siempre debe elegir el enfoque más simple que resuelve el problema en cuestión. No puedo ver qué hace, por ejemplo, la función for_each que justifica el uso de una clase auxiliar sobre varias líneas simples de código que se encuentran dentro de un ciclo normal para que todos puedan ver lo que está sucediendo.
Me gustaría saber, ¿qué piensas sobre mis preocupaciones? ¿Lo viste como yo cuando comenzaste a trabajar de esta manera y cambiaste de opinión cuando te acostumbraste? ¿Hay beneficios que pasé por alto? O simplemente ignoras estas cosas como yo lo hice (y seguiré haciéndolo, probablemente).
Gracias.
PD: Sé que hay un verdadero for_each loop en boost. Pero lo ignoro aquí ya que es una manera conveniente para mis bucles habituales con iteradores, supongo.
'std :: mem_fun' y ayuda similar, pero esta es una de las cosas dolorosas sobre C++ IMO. C++ 0x lambdas ayudará con esto. Se pone aún peor cuando intentas usar cosas como 'std :: bind1st' y composición. – msandiford
No creo que BOOST_FOR_EACH sea solo de conveniencia. Es más conciso y más expresivo que tu ciclo habitual. Es una mejora real. Creo que Lambdas hará que usar el STL sea mucho más fácil y lo llevará al nivel al que pertenece. – pmr