C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用C STL算法重写嵌套循环?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
循环很简单,但是我似乎不能用我的头围绕着使用STL算法给出下面相同的嵌套循环.
const int a_size = 5; // input
const int c_size = 2; // output
const int b_size = a_size * c_size; // multipliers

std::vector<float> a(a_sizE);
std::vector<float> b(b_sizE);
std::vector<float> c(c_sizE);

// fill a and b with data

// this nested loop
for(int i = 0; i<c_size; i++) {
    c[i] = 0.0;
    for(int k = 0; k<a_size; k++) {
        c[i] += (a[k] * b[i*a_size+k]);
    }
    c[i] = sigmoid(c[i]);
}

我想这样做的原因是Boost.Compute库,它将使用类似STL的算法(std :: transform,std :: for_each等)对GPU进行计算.

解决方法

我来了 @L_404_0@:
auto i = 0;
generate(begin(C),end(C),[&i,&a,&b]
{
    return sigmoid(inner_product
    (
        begin(a),end(a),begin(b) + distance(begin(a),end(a)) * i++,0.f
    ));
});

但是看起来不是很好 – 在这种情况下,我更愿意编写自己的算法.

或使用矩阵形式.与Eigen图书馆将成为:

@H_407_2@matrixXd b; VectorXd a,c; // ... c = (b*a).unaryExpr(sigmoid);

大佬总结

以上是大佬教程为你收集整理的如何使用C STL算法重写嵌套循环?全部内容,希望文章能够帮你解决如何使用C STL算法重写嵌套循环?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。