C++ 转换和 lambda

标签 c++ lambda map-function

是否可以将其转化为 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 一样好(如果不是更好的话)。

关于C++ 转换和 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30290140/

相关文章:

c++ - std::count 的复杂性

c++ - C++ 中的全局异常处理

c++ - 是否可以在 GA144 上运行仿真的 C 代码?

arrays - 将数组中的所有项复制到引用类型的新数组中的函数

c++ - COM+ 发布方法未降为 0

c# - Entity Framework 的集合值参数?

java - 如何使用 Java 流 API 将 Collection<Pair<K, Collection<V>> 转换为 List<MyObject<K,V>>?

Java, lambda : How to find a List from a Collection of Lists with different Types?

javascript - 如何将对象列表映射到数组数组

python - 为什么我收到此条件语句的语法错误?