【发布时间】:2020-06-28 19:24:36
【问题描述】:
Eric Niebler 提供了一个zip_with 函数。
但是,既然 C++20 支持范围,我想构建类似的东西。
filter 和 transform 的问题在于它们迭代了一个范围?
我该怎么做呢?我已经被这个问题困扰了一段时间,并且讨厌使用表达式模板来做同样的事情。
假设我有两个向量 M1{1,2,3} 和 M2{4,5,6}。
我想使用范围库来重载一个运算符以返回一个包含这两个矩阵相加的视图 - M1+M2 := {5,7,9}。
使用ranges-v3,我可以执行auto sum = zip_with(std::plus,M1,M2);
上面的表达式是惰性求值的。如何使用 C++20 Ranges 重新创建此表达式?
【问题讨论】:
-
您应该添加一个代码示例来显示您的意图。 两个 C++20 范围内的惰性求值函数可以用多种方式解释。
-
@super 也添加了示例。
-
我不明白你在问什么。是不是:如何实现
zip_with? -
@Barry 类似于 C++20 范围库
-
好的,但是 range-v3 的
zip_with在 C++20 范围内工作得很好,有什么问题?
标签: c++ lazy-evaluation c++20 range-v3