Kas ir masīvs?
Masīvs ir datu struktūra, kurā secīgi tiek glabāts viena un tā paša veida datu elements. C ++ masīvam ir noteikta izmēra.
Masīvu var redzēt kā līdzīga veida datu mainīgo lielumu kolekciju. Tā vietā, lai deklarētu katru mainīgo un piešķirtu tai vērtību atsevišķi, jūs varat deklarēt vienu mainīgo (masīvu) un pievienot tam dažādu mainīgo vērtības. Katru masīva pievienoto vērtību identificē indekss.
Šajā C ++ apmācībā jūs uzzināsiet:
- Kas ir masīvs?
- Kāpēc mums ir nepieciešami masīvi?
- Deklarēt masīvu C ++
- Masīva inicializēšana
- Masīvu veidi
- Viendimensiju masīvs
- Daudzdimensionāls masīvs
- Divdimensiju masīvs
- Trīsdimensiju masīvs
- Rādītājs masīvam
- Piekļuve masīva vērtībām
- Masīva priekšrocības C ++
- Masīva trūkumi C ++
Kāpēc mums ir nepieciešami masīvi?
Masīvi ir ļoti svarīgi jebkurā programmēšanas valodā. Tie nodrošina ērtāku mainīgo lielumu vai līdzīga veida datu datu apkopošanas veidu kopā, nevis tos atsevišķi. Katrai masīva vērtībai varēs piekļūt atsevišķi.
Deklarēt masīvu C ++
Masīva deklarācija C ++ nozīmē norādīt veidu, kā arī masīvā saglabājamo elementu skaitu. Sintakse:
type array-Name [ array-Size ];
Noteikumi vienas dimensijas masīva deklarēšanai C ++.
- Tips: tips ir masīvā saglabājamo elementu tips, un tam jābūt derīgam C ++ datu tipam.
- Masīva nosaukums: Masīva nosaukums ir nosaukums, kas jāpiešķir masīvam.
- Masīva izmērs: Masīva lielums ir masīvā saglabājamo elementu skaits. Tam jābūt veselam skaitlim un lielākam par 0.
Piemēram, jūs varat izveidot masīvu ar nosaukumu vecums un glabāt 5 studentu vecumu šādi:
int age[5];
Masīva vecums saglabās 5 veselus skaitļus, kas apzīmē dažādu studentu vecumu.
Masīva inicializēšana
Masīva inicializācija ir elementu piešķiršanas / glabāšanas process masīvam. Inicializāciju var veikt vienā paziņojumā vai pa vienam. Ņemiet vērā, ka masīva pirmais elements tiek glabāts indeksā 0, bet pēdējais - indeksā n-1, kur n ir kopējais masīva elementu skaits.
Vecuma masīva gadījumā pirmais elements tiks saglabāts indeksā 0, bet pēdējais - 4. indeksā.
Izmantosim vecuma masīvu, lai parādītu, kā var veikt masīva inicializēšanu:
int age[5] = {19, 18, 21, 20, 17};
Kopējais elementu skaits, kas atrodas {}, nedrīkst pārsniegt vērtību, kas norādīta []. Elements 19 atrodas indeksā 0, 18 indeksā 1, 21 indeksā 2, 20 indeksā 3 un 17 indeksā 4. Ja nenorādat masīvā saglabājamo elementu skaitu [], masīvs būs tikai pietiekami liels, lai tajā varētu ievietot {} pievienotos elementus. Piemēram:
int age[] = {19, 18, 21, 20, 17};
Iepriekš minētais paziņojums izveidos tieši tādu pašu masīvu kā iepriekšējais. Masīvam var piešķirt arī vienu elementu, izmantojot tā indeksu. Piemēram:
age[3] = 20;
Iepriekš minētajā paziņojumā vērtība 20 tiks saglabāta masīva ar nosaukumu vecums 3 indeksā. Tas nozīmē, ka 20 būs 4 th no masīva elements.
Masīvu veidi
Ir divu veidu C ++ masīvi:
- Viendimensiju masīvs
- Daudzdimensionāls masīvs
- Rādītājs masīvam
Viendimensiju masīvs
Tas ir masīvs, kurā datu vienības ir sakārtotas lineāri tikai vienā dimensijā. To parasti sauc par 1-D masīvu. Sintakse:
datatype array-name[size];
- Masīva nosaukums ir masīva nosaukums.
- Lielums ir masīvā saglabājamo vienumu skaits.
Piemēram:
#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };for (int x = 0; x < 5; x++){cout < Izeja:
Šeit ir koda ekrānuzņēmums:
Koda skaidrojums:
- Iekļaujot mūsu kodā iostream galvenes failu. Tas ļaus mums lasīt no konsoles un rakstīt tajā.
- Iekļaujot standarta nosaukumvietu, lai izmantotu tās klases un funkcijas, to neizsaucot.
- Izsaucot galveno () funkciju, kurā jāpievieno programmas loģika.
- Galvenās () funkcijas ķermeņa sākums.
- Deklarējot masīvu ar nosaukumu vecums, lai saglabātu 5 veselus skaitļus. Pieci veseli skaitļi ir arī inicializēti.
- Izmantojot cilni for for, izveidojiet veselu skaitli mainīgo x.
- For cilpas ķermeņa sākums.
- Izmantojot cilpas mainīgo x, atkārtojiet masīva vecuma vērtības un izdrukājiet tās konsolē. "\ N" ir jaunas rindas raksturs, un tas tiek izdrukāts jaunā rindā pēc katras atkārtošanas.
- Par cilpu ķermeņa beigas.
- Galvenās () funkcijas ķermeņa beigas.
Daudzdimensionāls masīvs
Tas ir masīvs, kurā datu vienības ir sakārtotas, lai veidotu masīvu masīvu. Daudzdimensiju masīvam var būt jebkurš izmēru skaits, taču bieži ir divdimensiju un trīsdimensiju masīvi. Sintakse:
datatype array-name[d1][d2][d3]… [dn];Masīva nosaukums ir masīva nosaukums, kuram būs n dimensijas. Piemēram:
Divdimensiju masīvs
2D masīvs glabā datus sarakstā ar 1-D masīvu. Tā ir matrica ar rindām un kolonnām. Lai deklarētu 2D masīvu, izmantojiet šādu sintaksi:
type array-Name [ x ][ y ];Veidam jābūt derīgam C ++ datu tipam. Skatiet 2D masīvu kā tabulu, kur x apzīmē rindu skaitu, bet y kolonnu skaitu. Tas nozīmē, ka jūs identificējat katru 2D masīva elementu, izmantojot formu a [x] [y], kur x ir rindu skaits un y kolonnu skaits, kurās ietilpst elements.
Šeit ir 2D masīva inicializācijas piemērs:
int a[2][3] = {{0, 2, 1} , /* row at index 0 */{4, 3, 7} , /* row at index 1 */};Iepriekš minētajā piemērā mums ir 2D masīvs, ko var uzskatīt par 2x3 matricu. Ir 2 rindas un 3 kolonnas. Elementam 0 var piekļūt kā [0] [1], jo tas atrodas indeksēto 0 un kolonnu 1 krustojumā. Elementam 3 var piekļūt kā [1] [2], jo tas atrodas pie indeksēto 1 rindu un indeksēto 2 kolonnu krustojums.
Ņemiet vērā, ka mēs vienkārši pievienojām cirtainus bikšturus, lai atšķirtu dažādas elementu rindas. Inicializāciju varēja veikt arī šādi:
int a[2][3] = {0, 2, 1, 4, 3, 7};};Šis C ++ piemērs parāda, kā inicializēt un šķērsot 2D masīvu:
#includeusing namespace std;int main(){// a 2x3 arrayint a[3][2] = { {0, 2}, {1, 4}, {3, 7} };// traverse array elementsfor (int i=0; i<3; i++)for (int j=0; j<2; j++){cout << "a[" < Izeja:
Šeit ir iepriekš minētā koda ekrānuzņēmums:
Koda skaidrojums:
- Iekļaujot mūsu kodā iostream galvenes failu. Tas ļaus mums lasīt no konsoles un rakstīt tajā.
- Iekļaujot standarta nosaukumvietu, lai izmantotu tās klases un funkcijas, to neizsaucot.
- Zvanot uz galveno () funkciju, kurā jāpievieno kods.
- Galvenās () funkcijas ķermeņa sākums.
- Komentārs. C ++ kompilators to izlaidīs.
- Deklarējot 3 rindu un 2 kolonnu 2D masīvu. Masīvam ir pievienoti arī vienumi.
- Komentārs. C ++ kompilators to izlaidīs.
- Mainīgā izveide, izmantojot cilpu a. Šis mainīgais atkārtosies masīva rindu indeksos.
- Mainīgā izveidošana j, izmantojot cilpu a. Šis mainīgais atkārtosies masīva kolonnu indeksos.
- Cilpas ķermeņa sākums.
- Drukājiet mainīgo lielumu i un j vērtības konsolē konsoles kvadrātiekavās.
- Izdrukājiet masīva indeksā [i] [j] saglabāto vērtību a.
- Cilpas korpusa beigas.
- Funkcijai main () jāatgriež vesela skaitļa vērtība, ja programma darbojas labi.
- Galvenās () funkcijas ķermeņa beigas.
Trīsdimensiju masīvs
3D masīvs ir masīvu masīvs. Katru 3D masīva elementu identificē ar 3 indeksu kopu. Lai piekļūtu 3D masīva elementiem, mēs izmantojam trīs cilpām. Piemēram:
#includeusing namespace std;void main(){int a[2][3][2] = {{{4, 8},{2, 4},{1, 6}}, {{3, 6},{5, 4},{9, 3}}};cout << "a[0][1][0] = " << a[0][1][0] << "\n";cout << "a[0][1][1] = " << a[0][1][1] << "\n";} Izeja:
Šeit ir koda ekrānuzņēmums:
Koda skaidrojums:
- Iekļaujot mūsu kodā iostream galvenes failu. Tas ļaus mums lasīt no konsoles un rakstīt tajā.
- Iekļaujot standarta nosaukumvietu, lai izmantotu tās klases un funkcijas, to neizsaucot.
- Izsaucot galveno () funkciju, kurā jāpievieno programmas loģika.
- Galvenās () funkcijas ķermeņa sākums.
- 3D masīva deklarēšana ar 2x3x2 izmēru. Masīva vērtības ir arī inicializētas.
- Piekļuve masīva indeksā [0] [1] [0] saglabātajam vienumam un tā drukāšana uz konsoles.
- Piekļuve masīva indeksā [0] [1] [1] saglabātajam vienumam un tā drukāšana uz konsoles.
- Galvenās () funkcijas ķermeņa beigas.
Rādītājs masīvam
Rādītājs ir mainīgais, kas satur adresi. Izņemot rādītāja izmantošanu mainīgā adreses glabāšanai, mēs to varam izmantot masīva šūnas adreses glabāšanai. Masīva nosaukums pastāvīgi norāda uz tā pirmo elementu. Apsveriet tālāk sniegto deklarāciju:
int age[5];Vecums norāda uz $ age [0], masīva pirmā elementa adresi, kura nosaukums ir vecums. Apsveriet šādu piemēru:
#includeusing namespace std;int main(){int *john;int age[5] = { 19, 18, 21, 20, 17 };john = age;cout << john << "\n";cout << *john;} Izeja:
Ņemiet vērā, ka iepriekš minētās izejas pirmā vērtība var atgriezt citu vērtību atkarībā no adreses, kas piešķirta masīva pirmajam elementam jūsu datora atmiņā.
Šeit ir koda ekrānuzņēmums:
Koda skaidrojums:
- Iekļaujot mūsu kodā iostream galvenes failu. Tas ļaus mums lasīt no konsoles un rakstīt tajā.
- Iekļaujot standarta nosaukumvietu, lai izmantotu tās klases un funkcijas, to neizsaucot.
- Izsaucot galveno () funkciju, kurā jāpievieno programmas loģika.
- Galvenās () funkcijas ķermeņa sākums.
- Deklarējot rādītāja mainīgo ar nosaukumu * john.
- Deklarējot vesela skaitļa masīvu ar nosaukumu age, lai saglabātu 5 veselus skaitļus. Ir inicializētas arī veselu skaitļu vērtības.
- Piešķirot mainīgajam Džonam masīva vecuma pirmajā indeksā saglabātā vienuma adreses vērtību.
- Drukājot mainīgā lieluma john vērtību, kas ir masīva vecuma pirmajā indeksā saglabātā vienuma adrese.
- Pirmās masīvā saglabāto vērtību izdrukāšana.
- Galvenās () funkcijas ķermeņa beigas.
Masīvu nosaukumus var izmantot kā pastāvīgus rādītājus, un arī otrādi. Tas nozīmē, ka ar * (vecums + 3) var piekļūt vērtībai, kas saglabāta masīva vecuma 3. indeksā. Piemēram:
#includeusing namespace std;int main() {// an array of 5 elements.int age[5] = { 19, 18, 21, 20, 17 };int *p;p = age;// output array valuescout << "Using pointer: " << endl;for (int x=0; x<5; x++) {cout << "*(p + " << x << ") : ";cout << *(p + x) << endl;}cout << "Using age as address: " << endl;for (int x = 0; x < 5; x++) {cout << "*(age + " << x << ") : ";cout << *(age + x) << endl;}return 0;} Izeja:
Šeit ir koda ekrānuzņēmums:
Koda skaidrojums:
- Iekļaujot mūsu kodā iostream galvenes failu. Tas ļaus mums lasīt no konsoles un rakstīt tajā.
- Iekļaujot standarta nosaukumvietu, lai izmantotu tās klases un funkcijas, to neizsaucot.
- Galvenās () funkcijas izsaukšana un galvenās () funkcijas sākums.
- Komentārs. C ++ kompilators to izlaidīs.
- Deklarējot masīvu ar nosaukumu vecums, lai saglabātu 5 veselus skaitļus.
- Vesela skaitļa rādītāja izveide p.
- Piešķirot masīva vecuma pirmā elementa adreses vērtību.
- Komentārs. C ++ kompilators to izlaidīs.
- Konsolē izdrukājiet tekstu.
- Izveidojiet veselu skaitli x, izmantojot cilpu a. {Apzīmē cilpa for for body sākumu.
- Konsolē izdrukājiet x vērtības kopā ar kādu citu tekstu.
- Konsolē izdrukājiet * (p + x) vērtības.
- Par cilpu ķermeņa beigas.
- Konsolē izdrukājiet tekstu.
- Izveidojiet mainīgo x, izmantojot cilpu a. {Apzīmē for loop cilmes sākumu.
- Izdrukājiet x vērtības no 0 līdz 4 kopā ar citu tekstu.
- Izdrukājiet * (vecums + x) vērtības.
- For cilpas korpusa beigas.
- Atgriež vērtību, ja programma darbojas veiksmīgi.
- Galvenās () funkcijas ķermeņa beigas.
Piekļuve masīva vērtībām
Masīva elementiem var piekļūt, izmantojot attiecīgos indeksus. Elementa, kuram paredzēts piekļūt, indekss tiek pievienots kvadrātiekavās [] tūlīt pēc masīva nosaukuma. Piemēram:
int john = age[2];Iepriekš minētajā piemērā mēs vienkārši paziņojam, ka Džona vecums tiek saglabāts masīva ar nosaukumu vecums 2 indeksā. Tas nozīmē, ka Jāņa vecums ir 3 rd vērtību masīva vecumā. Šeit ir pilnīgs C ++ piemērs, kas parāda, kā piekļūt šai vērtībai un to izdrukāt:
#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };int john = age[2];cout << "The age of John is:"< Izeja:
Šeit ir koda ekrānuzņēmums:
Koda skaidrojums:
- Iekļaujot mūsu kodā iostream galvenes failu. Tas ļaus mums lasīt no konsoles un rakstīt tajā.
- Iekļaujot standarta nosaukumvietu, lai izmantotu tās klases un funkcijas, to neizsaucot.
- Zvanot uz galveno () funkciju, kurā jāpievieno kods.
- Galvenās () funkcijas pamatteksta sākums.
- Deklarējot masīvu ar nosaukumu age, lai saglabātu 5 veselā skaitļa elementus.
- Piekļuve masīva vecuma 2. indeksā glabātajai vērtībai un tās vērtības saglabāšana mainīgajā ar nosaukumu John.
- Mainīgā Jāņa vērtības drukāšana uz konsoles līdzās citam tekstam.
Masīva priekšrocības C ++
Šeit ir priekšrocības / priekšrocības, izmantojot masīvu C ++:
- Masīva elementus var viegli pārvietoties.
- Viegli manipulēt ar masīva datiem.
- Masīva elementiem var piekļūt nejauši.
- Masīvi atvieglo koda optimizāciju; tādējādi mēs varam paveikt daudz darba, izmantojot mazāk kodu.
- Viegli kārtot masīva datus.
Masīva trūkumi C ++
- Masīvam ir noteikts izmērs; līdz ar to mēs nevaram tam pievienot jaunus elementus pēc inicializācijas.
- Piešķirot vairāk atmiņas nekā nepieciešams, tiek iztērēta atmiņas vieta, un mazāka atmiņas piešķiršana var radīt problēmas.
- Masīvā saglabājamo elementu skaits ir jāzina iepriekš.
Kopsavilkums
- Masīvs ir datu struktūra, kurā tiek glabāti viena un tā paša veida dati.
- Masīva elementi tiek glabāti secīgi.
- Masīva elementi tiek apzīmēti, izmantojot attiecīgos indeksus. Pirmais elements atrodas indeksā 0, bet pēdējais - indeksā n-1, kur ir kopējais masīva elementu skaits.
- Masīva deklarēšana ietver masīva elementu datu tipu noteikšanu, kā arī masīvā saglabājamo elementu skaitu.
- Viendimensiju masīvā elementi tiek glabāti secīgi.
- Divdimensiju masīvā elementi tiek glabāti rindās un kolonnās.
- Trīsdimensiju masīvs ir masīvu masīvs.
- Elementus masīvam var pievienot, izmantojot to indeksus.
- Masīva elementiem var piekļūt, izmantojot to indeksus.
- Daudzdimensiju masīvam ir vairāk nekā viena dimensija.
- Masīva nosaukums norāda uz tā pirmo elementu.
- Masīviem ir noteikts izmērs, kas nozīmē, ka masīvam pēc tā inicializācijas nevar pievienot jaunus elementus.