为什么 std 中仍然没有启用范围的缩减算法?

Why is there still no range-enabled reduction algorithm in std?

唯一可用的选项是 std::ranges::for_each 和简单的基于范围的 for 循环。 std::accumulatestd::reducestd::inner_product 没有对应项。 std::ranges::reduce 如果存在,就足够了;结合 reduce 和 zip 可以实现内积。回到基于迭代器的算法是令人失望的。为个人代码库调整 reduce 没什么大不了的,但是恕我直言,std 函数更可取。不知道std lib或者23 horizo​​ns有没有这样的函数

此致, 调频

Why is there still no range-enabled reduction algorithm in std?

因为它们未包含在 C++20 的“The One Ranges Proposal”P0896 中。

I am wondering if there is such function ... on the 23 horizons.

提案 P2214“C++23 范围计划”中计划了 C++23 范围的扩展。该提案分为 3 个优先级。理想情况下,所有层都将成为 C++23 的一部分,但这取决于是否有时间。

std::ranges::foldstd::accumulate 的对应物,它计划用于顶层,并已在 P2322“ranges::fold”中提出。

std::ranges::reduce原计划在中间层。

std::inner_product 对应项已决定不包含在 C++23 范围的计划中,因为 foldreduce 被认为足够了。

can be achieved combining reduce with zip

Zip 视图本身也不在 C++20 范围内。但它们计划在 C++23 的顶层,并已在 P2321“zip”中提出。