dynamische Matritze verlängern?
-
Hallo Mädels,
ich habe da mal eine Frage die ich mich nicht so recht zu stellen traue ...
ALSO: Wie (wenn überhaupt) ist es möglich eine Matritze für die ich Speicher dynamisch besorge zu vergrößern?
Ich stelle während des Betriebs fest, daß die Zeilen meiner Matritze nicht ausreichen und möchte aus diesem Grunde Zeilen anfügen.
Jetzt könnte ich natürlich einfach eine weitere Matritze erstellen welche gleich um die Anzahl benötigter Zeilen größer ist, jedoch ist die Matritze derart groß, daß dies im laufenden Betrieb zuviel Zeit benötigt.
Leider ist der Zeitfaktor in meinem Vorhaben das entscheidende Kriterium und somit kommt ein "Umschaufeln" der Daten nicht in Frage.Vielen Dank für Eure Hilfe!
Günni
-
ahm weiss ich auch nicht 100%ig
aber ich habe gehoert
wenn man dynamisch eine matrize hat ( 2d ) object, muss man pointer auf pointer verwenden
bei 3d dann pointer auf pointer auf pointer
bei array ( 1 D ) hast ja dann nur pointer.
verstehst was ich meine???
wie genau, weiss ich nicht.
habs nur von einem erfahren der den gauss algorithmus programiert hat fuer eine n*n matrix.
maybe gibts da unter google was, wo du anschauen kannst wie es geht
gruss
PS. sag obs geklappt hat
-
Habs jetzt mal per TryAndError probiert.
Fuer ein Arrayfloat arr[2][5]Sollte so eigentlich gehen.
#include <iostream> #include <iomanip> int main() { float **ptr=new float*; float f; for(int i=0;i<=2;++i) for(int a=0;i<=5;++a) { std::cin >> f; *(*(ptr+i)+a)=f; } for(i=0;i<=2;++i) for(int a=0;i<=5;++a) std::cout << ptr[i][a] << std::endl; return 0; }Das einzige Problem ist... das tut es nicht.

Es gibt einen Laufzeit fehler, sobald man die erste Eingabe bestaetigt.
Bei dieser Zeile sitzt der Fehler*(*(ptr+i)+a)=f;MfG
Raptor
-
gelöscht
-
hi
das du einen laufzeitfehler bekommst duerfte daran liegen dass du nur fuer die zeilen deiner matrix (nicht array) speicher besorgst
hier mal die korrekte art speicher fuer eine dyn. matrix zu besorgen:
CString **m_Matrix; m_Matrix = new CString *[m_zeilen]; for ( i=0; i<m_zeilen; i++) { m_Matrix[i] = new CString[m_spalten]; }aber vielleicht hab ich auch nur alles falsch verstanden

nun moechte ich genau dann wenn meine matritze voll ist diese einfach erweitern
da ich aber den speicher vor befuellen festlege wuesste ich nicht wie das funktioniert
danke fuer eure hilfe