STL: Vector Element in einem Funktionskopf?
-
Hallo zusammen,
ich bin ein absoluter Neuling, was bzgl. C++ Programmierung angeht.
ich möchte eine Funktion schreiben, die von einem Vektor abhängig ist. Für C++ gibt es ja diese nüztliche <vector> Klasse.
#include <vector> int index_suche_mehrfach (double u, double knoten[], int m) { int i=3, help=3; for (i=3; i <= m-1; i++) //B-Splines 3.Ord deswegen i=3 { if (u >= knoten[i]) help=i; else break; } return help; }
An der Stelle von "double knoten[]" im Funktionskopf möchte ich einen Vektor von der <vector> Klasse verwenden. Was muss ich ändern?
Vielen Dank!
skyforce
-
#include <vector> int index_suche_mehrfach (double u, const std::vector<double>& knoten, int m) { int help=3; for (int i=3; i < m; ++i) //B-Splines 3.Ord deswegen i=3 { if (u >= knoten[i]) help=i; else break; } return help; }
Edit: Zwischendurch stand hier große Grütze.
Und jetzt immernoch -.-
Ach, ich geb's einfach auf, daraus ein schöneres Konstrukt hinzubekommen.
-
skyforce schrieb:
An der Stelle von "double knoten[]" im Funktionskopf möchte ich einen Vektor von der <vector> Klasse verwenden. Was muss ich ändern?
Rein technisch ist die Frage zwar schon beantwortet, ich will Dir trotzdem noch eine Version zeigen, die auf den Parameter m verzichtet - den ich als Arraygroesse gedeutet habe - die Notwendigkeit für eine Hilfsvariable eliminiert und die Vergleiche auf reine < (kleiner als) reduziert.
/* Sucht den letzten Index i(mit i=[3..n)) für den gilt knoten[i]<=u */ int index_letzter_knoten_kleiner_gleich(double u, const std::vector<double>& knoten){ if(knoten.size() < 4 || u < knoten[3]) return 3; std::size_t i = 3; // suche solange nicht ende und nächster Knoten nicht groesser u while(i<knoten.size()-1 && !(u < knoten[i+1])) ++i; return i; }
-
Vielen Dank für deine Mühe!
Hat mir sehr weiter geholfen!
-
Furble Wurble schrieb:
und die Vergleiche auf reine < (kleiner als) reduziert
Bin mir fast sicher dass er nicht weiss wozu das gut sein könnte...