009
20.05.2005, 07:51 Uhr
doppler
|
Wenn du statt capacity() size() benutzt, sollte max1 5 und nicht 6 sein, max2 und max3 bleiben aber 3, denn nach dem Durchlauf der letzten for-Schleife sind i und j jeweils 3. Wenn du also schreibst
C++: |
DreiDArray[i].resize(5); DreiDArray[i][j].resize(5);
|
werden nur DreiDArray[3] bzw. DreiDArray[3][3] auf die Größe 5 erweitert. Damit bleiben nach Auswertung von
C++: |
max2 = DreiDArray[0].size (); max3 = DreiDArray[0][0].size ();
|
max2 und max3 3. Wenn du aber
C++: |
max2 = DreiDArray[3].size (); max3 = DreiDArray[3][3].size ();
|
auswertest, haben max2 und max3 den Wert 5. Um die gesamte Matrix zu vergrößern, musst du wie am Anfang jede Komponente vergrößern:
C++: |
DreiDArray.resize(5); for(i = 0; i < 5; i++){ DreiDArray[i].resize(5); } for(i = 0; i < 5; i++){ for(j = 0; j < 5; j++){ DreiDArray[i][j].resize(5); } }
|
Man kann sich DreiDArray als vector vorstellen, bei dem jede Komponente eine Matrix ist. Wenn du diesen vector mit resize() vergrößerst, wird nichts mit den bestehenden Komponenten gemacht, sondern nur Komponenten (Matrizen der Größe 0x0) am Ende angehangen. Genauso ist jedes DreiDArray[i] ein vector, bei dem jede Komponente ein vector ist. |