Algoritmos STL independientes (como std::count_if
) toman un par de iteradores. En todos los casos en los que uso (y en todos los ejemplos que he visto en línea!), Me encuentro escribiendoAlgoritmos STL tomando el contenedor completo en lugar de .begin(), end() como arg?
std::count_if(myContainer.begin(),myContainer.end(), /* ... */);
¿Hay una razón por la cual las plantillas de la taquigrafía del estilo
std::count_if(myContainer, /* ... */);
no son siempre que, dado que más de que no es la operación realizada en todo el contenedor? ¿Simplemente lo pasé por alto? ¿La respuesta es diferente para C++ 11 y C++ 03?
Es simplemente una decisión de diseño. A muchas personas no les parece una buena opción (ver http://www.slideshare.net/rawwell/iteratorsmustgo). Boost proporciona esos algoritmos usando sus conceptos de Rango. – visitor