Vektorlänge abhängig von einer Variable definieren?
-
hallo zusammen,
ich bin ein Neuling in C++, würde lieber das ganze in Matlab programmieren. Doch bei meiner Bachelorarbeit muss ich zwingend die Sachen in C++ umsetzen und da kenn ich mich überhaupt nicht aus. Ich hoffe Ihr könnt mir weiterhelfen.
Ich schreibe gerade eine Funktion:
#include <vector> #include <cmath> /* index: Der Index des Intervalls, in dem u liegt u: der Wert, für diesen der Funktionswert der Splinekurve ausgerechnet werden soll knoten: Knotenvektor kontroll: Kontrollpunktvektor Grad n: 3 */ double deboor (int index, int grad, double u, const std::vector<double>& kontroll, const std::vector<double>& knoten) { int i=0, k=0; std::vector<double> d[grad][kontroll.size()]; if (u < knoten[0] || u > knoten[knoten.size()-1]) // Wenn u außerhalb Knotenfolge, dann funktionswert=0 return 0; for (i=index-grad; i <= index; i++) { d[0][i] = kontroll[i]; } for (k=1; k <= grad; k++) { for (i = index-grad+k; i <= index; i++) { d[k][i] = (knoten[i+grad+1-k] - u)/(knoten[i+grad+1-k] - knoten[i]) * d[k-1][i-1] + (u-knoten[i])/(knoten[i+grad+1-k] - knoten[i]) * d[k-1][i]; } } return (d[k-1][i-1]); }
Ich möchte den 2.dim Vektor d so definieren, dass dieser die Länge "grad" und "kontroll.size()" hat. Wie muss ich meinen Code ändern?
Außerdem wie könnte man mein Programm bzgl. Geschwindigkeit noch verbessern?
Vielen Dank im Voraus!
-
Dann bau doch einen jagged vector:
Syntax nicht geprüft:typedef std::vector<int> INNEN; typedef std::vector<INNEN> AUSSEN;
Warum willst Du den hier wieder einen C/C++ Vector nehmen.
-
meinst du man kann den Vektor auch anders definieren? z.B
double d[grad][kontroll.size()-1]
Doch so funktioniert es auch nicht
-
skyforce schrieb:
meinst du man kann den Vektor auch anders definieren? z.B
double d[grad][kontroll.size()-1]
Doch so funktioniert es auch nicht
Nein. Das meine ich nicht.
Ich meine Du sollst zwei std::vector ineinander verschachteln, wie ich es Dir mit den typedefs gezeigt habe.