|
发表于 2024-2-25 11:20:40
|
显示全部楼层
5# mathe
_1是bind的占位符,其全名是:std::tr1::placeholders::_1
由于用全局空间的函数atan2 ,pow 是正常的,于是我把std::tr1::comp_ellint_3函数的返回值放在一个自定义的全局函数里,就可以通过编译了:- #include <tr1/functional> #include <tr1/cmath>#include <algorithm> #include <iostream> #include <vector>// #include <cmath> using std::tr1::placeholders::_1; void putout (double i) { std::cout<<std::fixed << " " << i;}double wraped (double a,double b) { return std::tr1::comp_ellint_3(a,b);}int main() { std::vector<double> v; v.push_back(.1);v.push_back(.2);v.push_back(.3);v.push_back(.4); std::transform(v.begin(), v.end(), v.begin(), std::tr1::bind(wraped, _1, .5)); std::for_each(v.begin(), v.end(), putout); return (0); }
复制代码 但这种方法多了一重包装,不知道有没有直接的方法。 |
|