我在C++如何使用的push_back双*指针
void LocatePulseEdges(int points, double* signal_x, double* signal_y, double* derivative, double threshold, double* left_edge, double* right_edge){
for (int i=0; i<points; i++){
if(signal_y[i]<threshold){
left_edge.push_back(signal_x[i]);
}
}
}
当我编译它,我得到的错误
In function ‘void LocatePulseEdges(int, double*, double*, double*, double, double*, double*)’: error: request for member ‘push_back’ in ‘left_edge’, which is of non-class type ‘double*’
由于我是新手下面的函数在C++和我显然,试图了解指针和如何使用它们,我不明白为什么我不能使用push_back
。
我还试图用(*left_edge)
或(*signal_y[i])
但预计它不是正确的......
任何想法或帮助将是更受欢迎!
编辑
我修改了代码如下
void LocatePulseEdges(int points, double* signal_x, double* signal_y, double* derivative, double threshold, vector<double> left_edge, vector<double> right_edge){
for (int i=0; i<points; i++){
if(signal_y[i]<threshold){
left_edge.push_back(signal_x[i]);
}
}
}
然后在我的代码,我这样调用
void Analyze(unsigned int first_run, unsigned int last_run, unsigned int last_segment){
double* x = new double[points]; // SIZE limited only by OS/Hardware
double* y = new double[points];
double* derivative = new double[points];
std::vector<double> left_edge;
std::vector<double> right_edge;
Function_to_Fill_X_and_Y_and_derivative();
LocatePulseEdges(points, x, y, derivative, -0.5*RMS, left_edge, right_edge);
}
功能。虽然我没有得到任何编译错误,程序一旦函数被调用就会崩溃。
'double *'是内建类型,它没有任何成员。你可能想要像'left_edge [any_index] = signal_x [i];'。 – songyuanyao
'left_edge'不是一个容器。 –
@songyuanyao:感谢您的评论!问题是'signal_x.Size()'是相当大的(即〜1e7),因此我想使用'push_back'来节省内存空间。 – Thanos