Estaba deambulando cómo es posible reverese string
s que están contenidas en un vector
usando un solo comando for_each
solo en una línea "simple".Invirtiendo cadenas en un vector usando for_each y bind
Sí, sé que es fácil con un functor personalizado, pero no puedo aceptar que no se puede hacer usando bind
(al menos no pude hacerlo).
#include <vector>
#include <string>
#include <algorithm>
std::vector<std::string> v;
v.push_back("abc");
v.push_back("12345");
std::for_each(v.begin(), v.end(), /*call std::reverse for each element*/);
Editar: Gracias mucho por esas soluciones funtastic. Sin embargo, la solución para mí no era usar el tr1::bind que viene con el paquete de características/SP1 de Visual Studio 2008. No sé por qué no funciona como se esperaba, pero así son las cosas (even MS admits that it's buggy). Tal vez algunos hotfixes ayudarán.
Con boost :: bind todo funciona como se desea y es tan fácil (pero a veces relly messy :)). Realmente debería haber intentado impulso :: unen en el primer lugar ...
"Sí, ya sé que es fácil de hacer con una llave, pero no puedo aceptar que no se puede hacer usando el martillo" –
@R. Pate: me parece que saber cómo usar todas las herramientas en mi caja de herramientas en muchas situaciones, incluso donde otra herramienta hubiera sido mejor, es muy importante para mejorar la experiencia. Mi código de mascota está lleno de esto. En el código de producción, generalmente trato de elegir el mejor disponible (que sé, porque he experimentado con todos). –
También me gustaría subrayar que el uso de bind/lambdas es más claro: la definición de lo que se hace es local, lo que ayuda a las personas que lo leen ... si no es demasiado desordenado. –