dynamischen mehrdimensionalen array an eine Funktion übergeben und ihn dort erzeugen
-
ich glaube du hast da was falsch verstanden es geht um einen 2Dimensionalen Array unbekannter größe also irgendwas mit Vektoren zu machen wäre absolut dämlich
oder vielleicht sollte ich es anders ausdrücken. man könnte es eher als Matrix mit unbekannter größe beschreiben
-
tommy1987 schrieb:
irgendwas mit Vektoren zu machen wäre absolut dämlich
Mit std::vector kannst du alles machen, was du mit arrays machst. I.d.R. ist es absolut dämlich keinen vector zu benutzen.
-
nagut wenn ihr mir dann auch noch verratet wie, für mich ist es zumindest nicht wirklich ersichtlich
-
std::vector<std::vector<int> >
Sinnvolle Alternative: boost::multi_array
http://www.boost.org/doc/libs/1_43_0/libs/multi_array/doc/index.html
-
sorry das ich nochmal Frage ab wie erzeuge ich nun die länge der Vecoren dynamisch in der Function?
-
http://www.boost.org/doc/libs/1_43_0/libs/multi_array/doc/user.html#sec_example
#include "boost/multi_array.hpp" #include <cassert> int main () { // Create a 3D array that is 3 x 4 x 2 typedef boost::multi_array<double, 3> array_type; typedef array_type::index index; array_type A(boost::extents[3][4][2]); // Assign values to the elements int values = 0; for(index i = 0; i != 3; ++i) for(index j = 0; j != 4; ++j) for(index k = 0; k != 2; ++k) A[i][j][k] = values++; // Verify values int verify = 0; for(index i = 0; i != 3; ++i) for(index j = 0; j != 4; ++j) for(index k = 0; k != 2; ++k) assert(A[i][j][k] == verify++); return 0; }
-
das hilft mir nicht weiter, nachdiesem Quellcode mussich vorher wissen wie groß meine Matrix wird, aber ich weiss es erst innerhalb der Funktion
Also nochmal zum verständnis
ich habe globaltypedef boost::multi_array<float, 2> Matrix;dann in der main
Höhenfeld H; Matrix HF; H.LoadHF("test.bmp", &HF);und jetzt fehlt mir die definition der größe der Matrix innerhalb der Funktion ohne das ich den Pointer verlier
-
die Größen von solchen Dingen wie std::vector kann man normalerweise im Konstruktor und ggf. in resize()-Methoden angeben. Die jeweilige Doku dürfte dir da weiterhelfen

-
Du musst nicht wissen wie groß die Arrays sind, du musst nur wissen wie viele Dimensionen dein Array haben soll.
-
Ich habe mich nun entschieden, lieber meine Funktion umzuschreiben so das sie einen pointer zurückliefert, das ersparrt ne Menge Probleme.
-
Oder du nutzt boost::multi_array, spart noch mehr Probleme.