【发布时间】:2020-05-15 21:51:19
【问题描述】:
我有一个函数成员:
double XC::nz(double z){
return pow(z/zrange_0,2)*exp(-pow(z/zrange_0,1.5));
}
我想得到等价的但具有矢量形式的,所以我做到了:
vector<double> XC::nz_vec(vector<double> input){
vector<double> output;
output.resize(input.size());
transform(input.begin(), input.end(), output.begin(), nz);
return output;
}
但是自从调用nz函数后编译没有通过,尤其是transform(input.begin(), input.end(), output.begin(), nz)。
所以,我看到了一个替代方案:
transform(input.begin(), input.end(), output.begin(), this->*nz);
但编译器仍然报错。
在我的标题中,我放了:
class XC{
...
public:
double nz(double);
vector<double> nz_vec(vector<double>);
}
如何规避这个问题,因为我想在同一个类的另一个方法中做:
int numPoints = 100000;
vector<double> nz_vec_min = nz_vec(linspace(zmin[0], zmin[1], numPoints));
vector<double> nz_vec_max = nz_vec(linspace(zmax[0], zmax[1], numPoints));
使用返回向量的 linspace(如在 Python 中)?
我可以设置编译器标志-std=c++11或更早。
【问题讨论】:
-
确切的编译器错误信息是什么?
标签: c++ vector mapreduce stdvector