Ich habe die folgende Funktion in C++Wie mit Doppel * Zeiger verwenden 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]);
}
}
}
Als ich es kompilieren, erhalte ich die Fehler
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*’
Da ich ein Neuling bin in C++ und ich natürlich, versuchen, über Zeiger zu lernen und wie man sie verwendet, kann ich nicht verstehen, warum ich push_back
nicht verwenden kann.
Ich habe auch versucht (*left_edge)
oder (*signal_y[i])
zu verwenden, aber da es nicht richtig zu erwarten war ...
Jede Idee oder Hilfe wäre mehr als willkommen sein!
EDIT
ich den Code geändert als
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]);
}
}
}
Dann in meinem Code folgt nenne ich die Funktion wie diese
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);
}
Obwohl ich keine Kompilierungsfehler erhalten, das Programm stürzt ab, sobald die Funktion aufgerufen wird.
'double *' ist ein eingebauter Typ, es hat keine Mitglieder. Vielleicht möchtest du wie 'left_edge [any_index] = signal_x [i];'. – songyuanyao
'left_edge' ist kein Container. –
@songyuanyao: Danke für deinen Kommentar! Die Sache ist, dass 'signal_x.Size()' ziemlich groß ist (d. H. ~ 1e7), daher dachte ich daran, 'push_back' zu verwenden, um etwas Speicherplatz im Speicher zu sparen. – Thanos