C++ 转换和 lambda
C++ transform and lambda
是否可以将其转化为 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
.
一样好(如果不是更好的话)
是否可以将其转化为 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
.