Можно ли превратить это в простое и приятное использование std::transform
?
int j = 0;
for (auto &vi : V)
{
auto div_res = div(vi + j, 10);
j = div_res.quot;
vi = div_res.rem;
}
Этот код делает очень простую вещь, и это чувствует это должно быть намного короче и яснее.
Или, если не преобразование, есть ли стандартная функция, которая делает такие вещи проще?
Как насчет:
std::transform(vi.begin(), vi.end(), vi.begin(),
[&j](auto elem) /* or const auto& elem */
{
auto div_res = div(elem + j, 10);
j = div_res.quot;
return div_res.rem;
}
);
Однако в этом случае на основе диапазона for
вероятно так же хорошо (если не лучше), чем std::transform
,