Programiranje

Kako delati z nazobčanimi nizi v C #

Matriko lahko definiramo kot zaporedno zbirko elementov istega podatkovnega tipa. Elementi polja so shranjeni na sosednjih pomnilniških mestih. Nizi so lahko enodimenzionalni. Nazobčano polje je posebna vrsta večdimenzionalnega polja, v katerem je lahko vsako polje (nazobčano polje dejansko polje nizov) različne velikosti.

Narezana polja lahko imate v katerem koli računalniškem jeziku, ki nudi podporo za nize. Nazobčana matrika (znana tudi kot raztrgana matrika) je niz nizov, v katerih so lahko matrike članov različnih dimenzij in velikosti. Za izboljšanje zmogljivosti lahko uporabite večdimenzionalne nize z nazobčanimi nizi.

Kako začeti z nazobčanimi nizi v C #

V tem poglavju bomo raziskali, kako prijaviti, inicializirati in dostopati do nazobčanih nizov. Kot vemo, nazobčana matrika obsega nabor nizov podobnih ali različnih velikosti. Z drugimi besedami, v nazobčani matriki je število vrstic določeno, število stolpcev pa se lahko razlikuje. Ko deklarirate nazobčano matriko, lahko preprosto navedete število vrstic polja in raje določite število stolpcev med izvajanjem.

Sporočite nam vse, kar smo se doslej naučili na neravnih nizih, z nekaj primeri kode. Upoštevajte naslednjo matriko.

niz [] [] str = nov niz [5] [];

Deklarirali ste vrstice polja. V tej matriki je 5 vrstic, ki lahko nato vsebujejo 5 nizov nizov različnih dolžin. Poglejmo zdaj, kako lahko v polju, imenovanem str, razglasimo 5 nizov, vsak z različno dolžino. Naslednji delček kode prikazuje, kako je to mogoče doseči.

str [0] = nov niz [5];

str [1] = nov niz [10];

str [2] = nov niz [20];

str [3] = nov niz [50];

str [4] = nov niz [10];

Zdaj lahko različno dolge nize shranite v nazobčano polje, kot je prikazano v spodnjem delčku kode.

str [0] [0] = "Pune";

str [1] [0] = "Kolkata";

str [2] [0] = "Bangalore";

str [3] [0] = "Roza mesto z imenom Jaipur";

str [4] [0] = "Hyderabad";

Tu je popoln seznam kod, ki ponazarja, kako lahko prijavite nazobčano matriko, shranite podatke, nato pa jih pridobite in prikažete v konzoli.

javna statična praznina Main (string [] args)

       {

// Najprej prijavimo nazobčano matriko

niz [] [] str = nov niz [5] [];

str [0] = nov niz [5];

str [1] = nov niz [10];

str [2] = nov niz [20];

str [3] = nov niz [50];

str [4] = nov niz [10];

// Zdaj shranimo podatke v nazobčani niz

str [0] [0] = "Pune";

str [1] [0] = "Kolkata";

str [2] [0] = "Bangalore";

str [3] [0] = "Roza mesto z imenom Jaipur";

str [4] [0] = "Hyderabad";

// Na koncu prikažemo vsebino vsakega niza nizov v nazobčani matriki

za (int i = 0; i <5; i ++)

Console.WriteLine (str [i] [0]);

Console.Read ();

       }

Kot lahko vidite v zgornjem programu, je število vrstic nazobčanega polja fiksno, število stolpcev pa različno. Ta primer predstavlja dvodimenzionalno nazobčano matriko. Če bi uporabili običajno dvodimenzionalno matriko, bi morali porabiti 5 x 50, tj. 250 bajtov. Razlog je v tem, da bi morali imeti prostor po 50 bajtov v vsakem polju v nazobčani matriki, da bi lahko sprejel največji niz. V tem primeru je največji niz velikosti 50. Nasprotno, pri uporabi neravnega polja na koncu porabite le 95 bajtov! Zanimivo, kajne?

Ko zaženete zgornji program, se v oknu konzole prikažejo nizi, shranjeni v nazobčani matriki.

Drug primer - nazobčana vrsta celih števil

Podobno kot smo ustvarili nazobčano niz nizov, lahko tudi vi ustvarite nazobčana polja celih števil. Pravzaprav lahko imate nazobčano polje katere koli vrste podatkov. Tukaj je opisano, kako lahko v C # razglasite nazobčano matriko.

int [] [] numbersArray;

Naslednji delček kode ponazarja, kako lahko razglasite celoštevilčno nazobčano matriko, tj. Nazobčano matriko, ki lahko nato shrani nize s celoštevilnimi elementi različnih elementov.

int [] [] numbersArray = novo int [5] [];

za (int i = 0; i <numbersArray.Length; i ++)

   {

numbersArray [i] = new int [10 * (i + 1)];

   }

Zgornji delček kode ustvari celoštevilčno nazobčano matriko z imenom numbersArray, ki pa vsebuje celoštevilske nize različnih velikosti.

$config[zx-auto] not found$config[zx-overlay] not found