Wie finde ich heraus wieviel Spalten und Zeilen array hat?
-
moin
ich hab letztens angefangen C++ zu lernen
und da bin ich auf folgendes Problem gestoßen:ich will einer Methode ein Array über geben.
Diese Methode soll dann herausfinden wieviel Zeilen und Spalten dieses Array hat. Wobei der Datentyp bekannt ist (double).
ich kenn zwar die "sizeof" - Funktion, aber damit hab ich des net geschaft:double ar2[2][5]; double* pColumn = ar2; int columns = sizeof(pColumn) / sizeof(double); int rows = sizeof ar2 / sizeof(pColumn);
ich weiss, dass des "double* pColumn = ar2;"
falsch ist, aber ich weiss nicht wie ich des lösen kann.mfg Kanonenfutter2k
-
Müsst so in etwa gehen:
template<int a, int b> int Zeilen(double[a][b] arr) { return a; } template<int a, int b> int Spalten(double[a][b] arr) { return b; }
-
Diese Funktionen können dir nur den Wert ermitteln wenn du ihn auch selber noch kennst.
Kanonenfutter2k: Wenn du einer Funktion also ein Array übergibst musst du (wie gezeigt) eine Templatelösung nehmen oder die Größen als zusätzliche Parameter übergeben. Du kannst einem Pointer später nicht mehr ansehen was dahinter steckt, deshalb musst du es dir merken.
-
thx für die schnelle lösung.
schad dass es net anders geht, da ich bei templates noch net angekommen bin,
hab erst arrays hinter mir und da wollt ich mal um des zu vertiefen
Matrix Operationen schreiben.
hab des Problem beim Konstruktor, gebraucht, da ich nur ein Array übergeben wollte.
muss ich mir was anderes überlegen, oder mit des zusätzlichen Parametern arbeiten.mfg Kanonenfutter2k
-
Schau dir doch mal std::vector an. Kannst du fast benutzen wie ein Array und merkt sich seine Größe.