所以假设
float bar [5] = { 5.7106, 3.1768, 5.7458, 4.5859, 2.2718 };
我正在寻找以下功能:
cummin(bar,bar+bar.size());
将返回到位的累积最小值 条形条目,例如该栏包含:
5.7106, 3.1768, 3.1768, 3.1768, 2.2718
我的问题也是可以实现的 累积分钟比天真的方法更有效率 (它在代码I的工作中用于瓶颈功能 我并不认为它可以被矢量化。
答案 0 :(得分:5)
没有这样的功能。但是,这是prefix sum的应用程序,在C ++中称为std::partial_sum
。
您可以这样称呼它:
std::partial_sum(begin(bar), end(bar), begin(bar),
[](float a, float b) { return std::min(a, b); });
如果这仍然是一个瓶颈,那么一个有趣的观察是前缀和可以有效地并行化。这不是一件轻而易举的事。幸运的是,Threading Building Blocks等并行算法库已经包含了它的实现。