c++的transform和lambda函数

C++ transform and lambda

本文关键字:lambda 函数 transform c++      更新时间:2023-10-16

是否有可能将这变成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函数使这类事情更容易?

怎么样:

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一样好(如果不是更好的话)。