CD: n 2D-ryhmien esittely
Kaksiulotteiset taulukot ovat kokoelma homogeenisia elementtejä, jotka ulottuvat useiden rivien ja sarakkeiden yli olettaen matriisin muodon. Alla on esimerkki 2D-taulukosta, jossa on m riviä ja n saraketta, jolloin luodaan matriisi, jossa on MxN-kokoonpano.
( a1, a2, a3, a4, …, an
b1, b2, b3, b4, …, bn
c1, c2, c3, c4, …, cn
.
.
.
m1, m2, m3, m4, …, mn )
Konsepti räsytettyjen ryhmien kanssa
Jagged-taulukko on taulukko. Räjähtämättömät taulukot ovat olennaisesti useita ryhmiä, jotka on pujottunut yhteen moniulotteisen taulukon muodostamiseksi. Kaksiulotteinen rosoinen ryhmä voi näyttää tällaiselta:
( ( a1, a2, a3, a4, …, an ),
( b1, b2, b3, b4, …, b20 ),
( c1, c2, c3, c4, …, c30 ),
.
.
.
( m1, m2, m3, m4, …, m25 ) )
Huomaa, että rosoisen taulukon kaikki rivit voivat sisältää tai eivät välttämättä sisällä yhtä monta elementtiä.
Tosi 2D-taulukot vs. Jagged-ryhmät
Jagged-taulukot ovat täysin erilaisia kuin todellinen 2D-ryhmä toteutuksen kannalta. On tärkeää ymmärtää, kuinka C # toteuttaa sekä moniulotteiset että saranaiset taulukot.
Ohjelmointikielet eroavat toisistaan moniulotteisten taulukkojen toteutuksessa. Jotkut ohjelmointikielet, kuten C, C ++, C #, Fortran jne. Tukevat todellisia 2D-ryhmiä. Vaikka on muitakin, jotka simuloivat tätä käyttäytymistä matriisimatriiseilla eli rosoisilla matriiseilla. Joten miten todellinen kaksiulotteinen taulukko eroaa rosoisista ryhmistä?
Moniulotteisten taulukkojen kaksi toteutusta ovat erilaiset tallennuskulutuksen suhteen. Vaikka oikeassa 2D-taulukossa olisi m riviä n elementtiä kussakin, rosoisessa taulukossa voi olla m riviä, joilla jokaisella on eri lukumäärä elementtejä. Tämä johtaa vähäiseen hukkahintaan tietoryhmille. Siten, alarajainen taulukko on täysin hieno:
int()() jagged array = ( (1, 2, 3, 4),
(5, 6, 7),
(8, 9) )
Jos sama tietojoukko olisi toteutettu todellisessa 2D-taulukossa, se olisi ollut seuraava:
int(, ) multiDimArray = ( 1, 2, 3, 4
5, 6, 7, 0
8, 9, 0, 0 )
Toiminnot 2D-ryhmissä C #: ssä
Tässä joitain 2D-ryhmien toimintoja, jotka on annettu alla:
1. Suorita C # 2D-taulukko
Katsotaanpa tapa, jolla julkaistaan 2D-taulukko C #: ssä, ja toinen tapa, kuinka ei julisteta 2D-taulukkoa C #: ssä.
Miten?
Todellinen 2D-ryhmän toteutus C #: ssä alkaa Array-ilmoituksella. Se näyttää alla:
int(, ) arr2D;
string(, ) arr2D_s;
Pilkkujen lukumäärä määritelmässä määrittelee taulukon ulottuvuuden. Huomaa, että et voi määrittää taulukon kokoa taulukkoilmoituksessa. Se on tehtävä taulukon alustamisen yhteydessä.
Kuinka ei?
2D-taulukkojen ja rosoisten ryhmien toteutusten välillä on helppo sekoittaa. Ripullinen taulukkoilmoitus näyttää alla:
int()() jagged array;
2. Alusta C # 2D-taulukko
Seuraava vaihe on alustaa juuri julistamamme 2D-taulukko. On useita tapoja tehdä niin.
Uuden operaattorin käyttäminen
arr2D = new int(2, 3); //separate initialization
string(, ) arr2D_s = new string(4, 5); //with declaration
Alustaminen arvoilla
//without dimensions
arr2D = new int(, )((1, 2), (3, 4), (5, 6));
//with declaration
arr2D_s = new string(2, 2)((“one”, ”two”), (“three”, “four”));
Ilman uutta operaattoria
Int(, ) arr2D_a = ((1, 2), (3, 4), (5, 6), (7, 8));
3. Lue elementit C # 2D -ryhmästä
Lue yksi elementti
Seuraava toimenpide on 2D-taulukon elementtien lukeminen. Koska 2D-taulukko on mxn-elementtien matriisi, jokaisella elementillä on nimetty rivi-indeksi- ja sarake-indeksiyhdistelmä. Voimme käyttää elementtejä tarjoamalla alaindeksissä rivi-hakemiston ja sarakkeen hakemiston. Alla on esimerkki:
int(, ) arr2D_i = ((1, 2), (3, 4), (5, 6), (7, 8));
string arr2D_s = ((“one”, ”two”), (“three”, “four”));
int val_i = arr2D_i(2, 1); //returns '6'
string val_s = arr2D_s(1, 1); //returns 'four'
Lue kaikki elementit
Edellä oleva menetelmä antaa meille taulukon yksittäisen elementin arvon. Kuinka kuljemme läpi koko joukon lukeaksesi sen kaikki elementit? Yksinkertainen ratkaisu on silmukoida koko taulukko läpi sisäkkäisillä / / silmukoilla.
Koodi
using System;
public class Program
(
public static void Main()
(
int(, ) arr2D_i = new int(3, 3)((1, 2, 3), (4, 5, 6), (7, 8, 9));
//reading all the elements through for loop
for (int i = 0; i < 3; i++)
(
for (int j = 0; j < 3; j++)
(
Console.Write(arr2D_i(i, j) + "\t");
)
Console.WriteLine("\n");
)
)
)
ulostulo
GetLength () -menetelmä
Okei. Edellä oleva esimerkki toimii vain, kun tiedän etukäteen taulukon elementtien määrän. Entä jos ryhmäni on dynaaminen? Kuinka voin käydä läpi kaikki dynaamisen taulukon elementit? Täältä tulee GetLength-menetelmä pelastamiseksi.
int arr2D.GetLength (0); // palauttaa ensimmäisen ulottuvuuden (rivit)
int arr2D.GetLength (1); // palauttaa toisen ulottuvuuden (sarakkeet)
Koodi
using System;
public class Program
(
public static void Main()
(
int(, ) arr2D_i = new int(3, 3)((1, 2, 3), (4, 5, 6), (7, 8, 9));
//reading all the elements through for loop
for (int i = 0; i < arr2D_i.GetLength(0); i++)
(
for (int j = 0; j < arr2D_i.GetLength(1); j++)
(
Console.Write(arr2D_i(i, j) + "\t");
)
Console.WriteLine("\n");
)
)
)
ulostulo
Kunkin silmukan teho
Jokaiselle silmukalle suoritetaan joukko komentoja taulukon jokaiselle elementille. Tämä on erittäin tehokas silmukkamekanismi, ja sitä suositellaan käytettäväksi, koska se on tehokkaampi kuin perinteinen silmukka.
Koodi
using System;
public class Program
(
public static void Main()
(
string(, ) arr2D_s = new string(3, 3)(("one", "two", "three"), ("four", "five", "six"), ("seven", "eight", "nine"));
//reading all the elements through foreach loop
foreach(var ele in arr2D_s)
(
Console.WriteLine(ele);
)
)
)
ulostulo
4. Aseta elementit C # 2D -ryhmään
Katsotaanpa nyt esimerkki elementtien lisäämisestä C # 2D-taulukkoon. Ajatuksena on kulkea taulukon jokainen sijainti ja antaa sille arvo.
Koodi
using System;
public class Program
(
public static void Main()
(
int(, ) arr2D_i = new int(3, 3)((1, 2, 3), (4, 5, 6), (7, 8, 9));
int(, ) squares = new int(3, 3);
int(, ) cubes = new int(3, 3);
for (int i = 0; i < arr2D_i.GetLength(0); i++)
(
for (int j = 0; j < arr2D_i.GetLength(1); j++)
(
squares(i, j) = arr2D_i(i, j) * arr2D_i(i, j);
cubes(i, j) = squares(i, j) * arr2D_i(i, j);
)
)
Console.WriteLine("Squares\n");
DisplayArray(squares);
Console.WriteLine("\n\nCubes\n");
DisplayArray(cubes);
)
static void DisplayArray(int(, ) arr)
(
for (int i = 0; i < arr.GetLength(0); i++)
(
for (int j = 0; j < arr.GetLength(1); j++)
( Console.Write(arr(i, j) + "\t"); )
Console.WriteLine("\n");
)
)
)
ulostulo
5. Päivitä C # 2D -ryhmän elementit
Päivitämme taulukkomme kerrottamaan kunkin elementin kahdella. Ajatuksena on kulkea taulukon jokainen sijainti ja päivittää sen hallussa oleva arvo.
Koodi
using System;
public class Program
(
public static void Main()
(
int(, ) arr2D_i = new int(3, 3)((1, 2, 3), (4, 5, 6), (7, 8, 9));
Console.WriteLine("Original Array\n");
DisplayArray(arr2D_i);
for (int i = 0; i < arr2D_i.GetLength(0); i++)
(
for (int j = 0; j < arr2D_i.GetLength(1); j++)
(
arr2D_i(i, j) *= 2;
)
)
Console.WriteLine("\n\nUpdated Array (multiplied by 2)\n");
DisplayArray(arr2D_i);
)
static void DisplayArray(int(, ) arr)
(
for (int i = 0; i < arr.GetLength(0); i++)
(
for (int j = 0; j < arr.GetLength(1); j++)
(
Console.Write(arr(i, j) + "\t");
)
Console.WriteLine("\n");
)
)
)
ulostulo
6. Poista elementit C # 2D -ryhmästä
Tämä on hankala toimenpide. Yksittäistä elementtiä ei voi poistaa todellisesta C # 2D-taulukosta. Yhden elementin poistaminen häiritsee taulukon mittoja siten, että se ei enää olisi matriisi. C # ei salli sitä, ellei se ole rosoinen taulukko.
Joten mikä on ratkaisu? Poistetaanko koko rivi vai koko sarake? Ei, C # ei sallisi sitä myös. Taulukko on kiinteä koko, kun se ilmoitetaan tai alustetaan. Sillä on varattu muistin korjattuja tavuja. Emme voi muuttaa sitä ajon aikana.
Ratkaisu tässä on luoda uusi taulukko ilman elementtejä, jotka haluamme poistaa.
Koodi
using System;
public class Program
(
public static void Main()
(
int(, ) arr2D_i = new int(3, 3)((1, 2, 3), (4, 5, 6), (7, 8, 9));
int(, ) new_array = new int(2, 2);
Console.WriteLine("Original Array\n");
DisplayArray(arr2D_i);
int rowToDel = 2;
int colToDel = 2;
for (int i = 0; i < arr2D_i.GetLength(0); i++)
(
if(i==rowToDel)
continue;
for (int j = 0; j < arr2D_i.GetLength(1); j++)
(
if(j==colToDel)
continue;
new_array(i, j)=arr2D_i(i, j);
)
)
Console.WriteLine("\n\nArray after deleting elements\n");
DisplayArray(new_array);
)
static void DisplayArray(int(, ) arr)
(
for (int i = 0; i < arr.GetLength(0); i++)
(
for (int j = 0; j < arr.GetLength(1); j++)
(
Console.Write(arr(i, j) + "\t");
)
Console.WriteLine("\n");
)
)
)
ulostulo
johtopäätös
Siten olemme nähneet, kuinka 2D-taulukko toteutetaan C #: ssä ja mitkä ovat CRUD-operaatiot, joita voimme suorittaa sille. Oppimme myös eron todellisen 2D-toteutuksen ja rosoisen taulukon välillä. C #: ssä on saatavana paljon enemmän menetelmiä auttaakseen kehittäjiä työskentelemään Arraysin kanssa helposti. Tarkista ne MSDN-dokumenteista.
Suositellut artikkelit
Tämä on opas CD: n 2D-ryhmiin. Tässä keskustellaan pilaantuneiden taulukkojen käsitteestä yhdessä C #: n 2D-taulukkojen operaatioiden kanssa. Voit myös katsoa seuraavia artikkeleita saadaksesi lisätietoja-
- 2D-ryhmät Java-tilassa
- 2D-ryhmät Pythonissa
- Ryhmät C #
- Ryhmät C ++: ssa
- Taulukot PHP: ssä
- 2D-grafiikka Java-versiossa
- Kuinka taulukot ja luettelot toimivat Pythonissa?
- Moniulotteiset taulukot C ++: ssa esimerkkien avulla
- 2D-taulukot PHP: ssä