为什么 std 中仍然没有启用范围的缩减算法?
Why is there still no range-enabled reduction algorithm in std?
唯一可用的选项是 std::ranges::for_each
和简单的基于范围的 for
循环。 std::accumulate
、std::reduce
或 std::inner_product
没有对应项。 std::ranges::reduce
如果存在,就足够了;结合 reduce 和 zip 可以实现内积。回到基于迭代器的算法是令人失望的。为个人代码库调整 reduce 没什么大不了的,但是恕我直言,std 函数更可取。不知道std lib或者23 horizons有没有这样的函数
此致,
调频
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::fold
是 std::accumulate
的对应物,它计划用于顶层,并已在 P2322“ranges::fold”中提出。
std::ranges::reduce
原计划在中间层。
std::inner_product
对应项已决定不包含在 C++23 范围的计划中,因为 fold
和 reduce
被认为足够了。
can be achieved combining reduce with zip
Zip 视图本身也不在 C++20 范围内。但它们计划在 C++23 的顶层,并已在 P2321“zip”中提出。
唯一可用的选项是 std::ranges::for_each
和简单的基于范围的 for
循环。 std::accumulate
、std::reduce
或 std::inner_product
没有对应项。 std::ranges::reduce
如果存在,就足够了;结合 reduce 和 zip 可以实现内积。回到基于迭代器的算法是令人失望的。为个人代码库调整 reduce 没什么大不了的,但是恕我直言,std 函数更可取。不知道std lib或者23 horizons有没有这样的函数
此致, 调频
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::fold
是 std::accumulate
的对应物,它计划用于顶层,并已在 P2322“ranges::fold”中提出。
std::ranges::reduce
原计划在中间层。
std::inner_product
对应项已决定不包含在 C++23 范围的计划中,因为 fold
和 reduce
被认为足够了。
can be achieved combining reduce with zip
Zip 视图本身也不在 C++20 范围内。但它们计划在 C++23 的顶层,并已在 P2321“zip”中提出。