首页 > 解决方案 > C++ 的展开是什么?

问题描述

C++ 有std::accumulate

std::accumulate 执行左折叠。为了执行正确的折叠,必须反转二元运算符的参数顺序,并使用反向迭代器。

Kwang 的 Haskell 博客——展开和折叠

展开器从种子值构建列表,而折叠器将列表简化为汇总值。

C++ 的“展开”是什么?

标签: c++functional-programming

解决方案


std::iota.

用顺序增加的值填充范围 [first, last),从 value 开始并重复评估 ++value。

std::generate/ std::generate_n

为范围 [first, last) 中的每个元素分配一个由给定函数对象 g 生成的值。

如果 count>0,则将由给定函数对象 g 生成的值分配给从 first 开始的范围内的第一个 count 元素。否则什么都不做。


推荐阅读