N-dimensionale arrays
Last updated
Was this helpful?
Last updated
Was this helpful?
Voorlopig hebben we enkel met zogenaamde 1-dimensionale arrays gewerkt. Je kan echter ook meerdimensionale arrays maken. Denk maar aan een n-bij-m array om een matrix voor te stellen. Ik bespreek meerdimensionale arrays maar kort om de eenvoudige reden dat je die in de praktijk minder vaak zal nodig hebben.
Stel je het voorbeeld aan het begin van dit hoofdstuk voor, waarin we de regenval gedurende 7 dagen wilden meten. Wat als we dit gedurende 4 weken wensen te doen, maar wel niet alle data in één lange array willen plaatsen? We zouden dan een 2-dimensionale array kunnen maken als volgt:
De arrays die we nu behandelen zullen steeds "rechthoekig" zijn. Daarmee bedoelen we dat ze steeds per rij of kolom evenveel elementen zullen bevatten als in de andere rijen of kolommen.
Door een komma tussen rechte haakjes te plaatsen tijdens de declaratie van een array, kunnen we meer-dimensionale arrays maken.
Bijvoorbeeld om een 2D array te maken schrijven we:
Een 3D-array:
(enz.)
Ook om nu effectief een array aan te maken gebruiken we de komma-notatie, alleen moeten we nu ook de effectieve groottes aangeven. Voor een 5 bij 10 array bijvoorbeeld schrijven we (merk op dat dit dus een 2D-array is):
Om een array ook onmiddellijk te initialiseren met waarden gebruiken we de volgende uitdrukking :
Merk op dat we dus nu een 3 bij 4 array maken maar dat dit dus nog steeds een 2D-array is. Iedere rij bestaat uit 3 elementen. We maken letterlijk een array van arrays.
Of bij een 3D-array:
Die we als volgt kunnen visualiseren:
Stel dat we uit de boeken-array de auteur van het derde boek wensen te tonen dan kunnen we schrijven:
Dit zal Mike Pastore
op het scherm zetten.
En bij de temperaturen:
Dit zal 27
teruggeven. We vragen van de laatste array ([2]
), daarbinnenin de eerste array (rij [0]
) en daarvan het tweede element(kolom [1]
).
Indien je de lengte opvraagt van een meer-dimensionale array dan krijg je de som van iedere lengte van iedere dimensie. Dit is logisch: in het geheugen van een computer worden arrays altijd als 1 dimensionale arrays voorgesteld. De boeken
array zal lengte 12 hebben (3*4) en temperaturen
toevallig ook (3x2x2).
Je kan echter de lengte van iedere aparte dimensie te weten komen met de .GetLength()
methode die iedere array heeft. Als parameter geef je de dimensie mee waarvan je de lengte wenst:
Het aantal dimensies van een array wordt trouwens weergegeven door de .Rank
eigenschap die ook iedere array heeft. Bijvoorbeeld:
Willen we dus de lengte van iedere dimensie van bijvoorbeeld de temperaturen
array op het scherm krijgen dan kan dat als volgt: