C ++ трансформация и лямбда

Можно ли превратить это в простое и приятное использование std::transform?

int j = 0;
for (auto &vi : V)
{
auto div_res = div(vi + j, 10);
j = div_res.quot;
vi = div_res.rem;
}

Этот код делает очень простую вещь, и это чувствует это должно быть намного короче и яснее.

Или, если не преобразование, есть ли стандартная функция, которая делает такие вещи проще?

1

Решение

Как насчет:

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,

3

Другие решения


По вопросам рекламы [email protected]