如何使用C STL算法重写嵌套循环?
发布时间:2020-12-16 05:45:12 所属栏目:百科 来源:网络整理
导读:循环很简单,但是我似乎不能用我的头围绕着使用STL算法给出下面相同的嵌套循环. const int a_size = 5; // inputconst int c_size = 2; // outputconst int b_size = a_size * c_size; // multipliersstd::vectorfloat a(a_size);std::vectorfloat b(b_size);
循环很简单,但是我似乎不能用我的头围绕着使用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进行计算. 解决方法
我来了
with:
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 )); }); 但是看起来不是很好 – 在这种情况下,我更愿意编写自己的算法. 或使用矩阵形式.与 MatrixXd b; VectorXd a,c; // ... c = (b*a).unaryExpr(sigmoid); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |