相关疑难解决方法(0)

我可以通过管道传输到 range-v3 累积吗?

我发现 3 年前的旧问题说一般来说这是不可能的,但我真的很想累积,因为在某些情况下它非常好,例如:

const double val = data | transform(...) | accumulate (...);
Run Code Online (Sandbox Code Playgroud)

所以我想知道是否在 range-v3/C++20 范围中添加了一些东西,使我能够做到这一点。

c++ range-v3 c++20

6
推荐指数
1
解决办法
448
查看次数

C++20 及更高版本:哪些视图/算法可以通过管道传输?

使用 g++-std=C++20或更高版本,可以编译以下内容(假设 vec 是适当类型的向量):

auto isEven = [](auto i) { return i % 2 == 0; }
auto filtered = vec | std::views::filter(isEven);
auto minEven = std::ranges::min_element(filtered);
Run Code Online (Sandbox Code Playgroud)

但以下情况则不然( 的​​参数数量错误std::ranges::__min_element_fn):

auto isEven = [](auto i) { return i % 2 == 0; }
auto minEven = vec | std::views::filter(isEven) | std::ranges::min_element();
Run Code Online (Sandbox Code Playgroud)

这里的理由是什么?我如何知道哪些与系列相关的漂亮设施可以合并到管道中?(后者是我凭直觉写的;从概念上讲,这似乎是执行此操作的“新范围方式”。)

c++ std-ranges

3
推荐指数
1
解决办法
337
查看次数

标签 统计

c++ ×2

c++20 ×1

range-v3 ×1

std-ranges ×1