La función de plantilla iota se agregó a la biblioteca estándar para llenar un rango de iteradores con una secuencia de valores cada vez mayor.¿Por qué no agregaron una versión de operador de iota?
template<typename ForwardIterator, typename Tp>
void
iota(ForwardIterator first, ForwardIterator last, Tp value)
{
for (; first != last; ++first)
{
*first = value;
++value;
}
}
mayoría de las otras plantillas en <numeric>
tienen versiones que aceptan los operadores especificados por el usuario. Tener esta :
template<typename ForwardIterator, typename Tp, typename Operator>
void
iota(ForwardIterator first, ForwardIterator last, Tp value, Operator op)
{
for (; first != last; ++first)
{
*first = value;
op(value);
}
}
sería conveniente si usted no quiere (o no puede) operador de sobrecarga ++() para Tp. Me gustaría encontrar esta versión más ampliamente utilizable que el operador predeterminado ++() versión. <
Tienes razón, con lambdas, la segunda versión no solo es más flexible que la primera, sino que es casi tan fácil de usar para incrementarla. –