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

Red*_*ave 17 c++ std range c++23 isocpp

唯一可用的选项是std::ranges::for_each简单的基于范围的for循环。没有对应的std::accumulate,std::reducestd::inner_productstd::ranges::reduce如果有的话就足够了;内积可以结合reduce和zip来实现。回到基于迭代器的算法是令人失望的。为个人代码库调整reduce并不是什么大问题,但恕我直言,std函数更可取。我想知道 std lib 或 23 地平线上是否有这样的功能。

问候,FM。

eer*_*ika 13

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

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

我想知道23地平线上是否有这样的功能。

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

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

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

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

可以结合reduce和zip来实现

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

  • 没有这个就违背了范围的目的:( (2认同)