Nizovi u C++ | Izjavi | Inicijaliziraj | Pokazivač na primjere polja

Što je niz?

Niz je podatkovna struktura koja sekvencijalno pohranjuje element istog tipa podataka. A C++ niz ima fiksnu veličinu.

Polje možete vidjeti kao skup varijabli slične vrste podataka. Umjesto da deklarirate svaku varijablu i dodjeljujete joj vrijednost zasebno, možete deklarirati jednu varijablu (niz) i dodati joj vrijednosti različitih varijabli. Svaka vrijednost dodana nizu identificirana je indeksom.

Zašto su nam potrebni nizovi?

nizovi vrlo su važni u svakom programskom jeziku. Omogućuju prikladniji način zajedničkog pohranjivanja varijabli ili zbirke podataka sličnog tipa umjesto odvojenog pohranjivanja. Svakoj vrijednosti niza pristupat će se zasebno.

Deklarirajte niz u C++

Deklaracija niza u C++ uključuje navođenje tipa kao i broja elemenata koje niz treba pohraniti. Sintaksa:

type array-Name [ array-Size ];

Pravila za deklariranje jednodimenzionalnog niza u C++.

  • Tip: Tip je tip elemenata koji će biti pohranjeni u nizu i mora biti valjan C++ vrsta podataka.
  • Naziv polja: Ime polja je ime koje se treba dodijeliti nizu.
  • Veličina polja: Veličina polja je broj elemenata koji se pohranjuju u polje. Mora biti cijeli broj i veći od 0.

Na primjer, možete stvoriti niz pod nazivom dob i pohraniti dob 5 učenika na sljedeći način:

int age[5];

Niz dobi pohranit će 5 cijelih brojeva koji predstavljaju dob različitih učenika.

Inicijalizacija polja

Inicijalizacija niza je proces dodjele/pohranjivanja elemenata nizu. Inicijalizacija se može izvršiti u jednoj izjavi ili jednu po jednu. Imajte na umu da je prvi element u nizu pohranjen na indeksu 0, dok je posljednji element pohranjen na indeksu n-1, gdje je n ukupan broj elemenata u nizu.

U slučaju niza starosti, prvi element će biti pohranjen pod indeksom 0, dok će zadnji element biti pohranjen pod indeksom 4.

Upotrijebimo polje dobi da pokažemo kako se može izvršiti inicijalizacija polja:

int age[5] = {19, 18, 21, 20, 17};

Ukupan broj elemenata unutar {} ne može premašiti vrijednost navedenu unutar []. Element 19 je na indeksu 0, 18 na indeksu 1, 21 na indeksu 2, 20 na indeksu 3 i 17 na indeksu 4. Ako ne navedete broj elemenata koji će biti pohranjeni u nizu unutar [ ], niz bit će dovoljno velik samo za držanje elemenata dodanih unutar {}. Na primjer:

int age[] = {19, 18, 21, 20, 17};

Gornja naredba stvorit će potpuno isti niz kao prethodna. Također možete dodijeliti jedan element nizu koristeći njegov indeks. Na primjer:

age[3] = 20;

Gornja izjava pohranit će vrijednost 20 na indeksu 3 polja pod nazivom age. To znači da će 20 biti 4th element niza.

Vrste nizova

Postoje dvije vrste C++ nizovi:

  • Jednodimenzionalni niz
  • Višedimenzionalni niz
  • Pokazivač na niz

Jednodimenzionalni niz

Ovo je niz u kojem su podatkovne stavke raspoređene linearno samo u jednoj dimenziji. Obično se naziva 1-D polje. Sintaksa:

datatype array-name[size];
  • Array-name je naziv niza.
  • Veličina je broj stavki koje treba pohraniti u polje.

Na primjer:

#include <iostream>
using namespace std;

int main()
{
	int age[5] = { 19, 18, 21, 20, 17 };
	for (int x = 0; x < 5; x++)
	{
		cout <<age[x]<<"\n";
	}
}

Izlaz:

Jednodimenzionalni niz

Evo snimke zaslona koda:

Jednodimenzionalni niz

Objašnjenje koda:

  1. Uključivanje iostream datoteke zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
  2. Uključivanje std imenskog prostora kako bi se njegove klase i funkcije koristile bez pozivanja.
  3. Poziv main() funkcije unutar koje treba dodati logiku programa.
  4. Početak tijela funkcije main().
  5. Deklaracija niza pod nazivom age za pohranjivanje 5 cijelih brojeva. 5 cijelih brojeva je također inicijalizirano.
  6. Stvorite cjelobrojnu varijablu x koristeći for petlju.
  7. Početak tijela for petlje.
  8. Korištenje varijable petlje x za ponavljanje vrijednosti niza age i njihovo ispisivanje na konzoli. "\n" je znak novog retka i ispisuje se u novom retku nakon svake iteracije.
  9. Kraj tijela za petlju.
  10. Kraj tijela funkcije main().

Višedimenzionalni niz

Ovo je niz u kojem su podatkovne stavke raspoređene tako da tvore niz nizova. Višedimenzionalni niz može imati bilo koji broj dimenzija, ali dvodimenzionalni i trodimenzionalni nizovi su uobičajeni. Sintaksa:

datatype array-name[d1][d2][d3]...[dn];

Array-name je naziv niza koji će imati n dimenzija. Na primjer:

Dvodimenzionalni niz

2D niz pohranjuje podatke u popis s 1-D nizom. To je matrica s redovima i stupcima. Za deklaraciju 2D polja koristite sljedeću sintaksu:

type array-Name [ x ][ y ];

Tip mora biti valjan C++ vrsta podataka. Pogledajte 2D niz kao tablicu, gdje x označava broj redaka, dok y označava broj stupaca. To znači da svaki element u 2D nizu identificirate pomoću oblika a[x][y], gdje je x broj retka, a y broj stupaca kojima element pripada.

Evo primjera kako inicijalizirati 2D niz:

int a[2][3] = {  
   {0, 2, 1} ,   /*  row at index 0 */
   {4, 3, 7} ,   /*  row at index 1 */
   };

U gornjem primjeru imamo 2D niz koji se može vidjeti kao 2×3 matrica. Ima 2 retka i 3 stupca. Elementu 0 može se pristupiti kao [0][1] jer se nalazi na sjecištu retka s indeksom 0 i stupca s indeksom 1. Elementu 3 može se pristupiti kao [1][2] jer se nalazi na sjecište retka s indeksom 1 i stupca s indeksom 2.

Imajte na umu da smo jednostavno dodali vitičaste zagrade kako bismo razlikovali različite redove elemenata. Inicijalizacija se također mogla izvršiti na sljedeći način:

int a[2][3] = {0, 2, 1, 4, 3, 7};
   };

Sljedeće C++ primjer pokazuje kako inicijalizirati i preći 2D niz:

#include <iostream>
using namespace std;
int main() 
{
	// a 2x3 array
	int a[3][2] = { {0, 2}, {1, 4}, {3, 7} };

	// traverse array elements

	for (int i=0; i<3; i++)
		for (int j=0; j<2; j++) 
		
		{
			cout << "a[" <<i<< "][" <<j<< "]: ";
			cout << a[i][j] << endl;
		}
	return 0;
}

Izlaz:

Dvodimenzionalni niz

Evo snimke zaslona gornjeg koda:

Dvodimenzionalni niz

Objašnjenje koda:

  1. Uključivanje iostream datoteke zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
  2. Uključivanje std imenskog prostora kako bi se njegove klase i funkcije koristile bez pozivanja.
  3. Pozivanje funkcije main() unutar koje treba dodati kod.
  4. Početak tijela funkcije main().
  5. Komentar. The C++ kompajler će ovo preskočiti.
  6. Deklaracija 2D niza od 3 reda i 2 stupca. Stavke su također dodane u polje.
  7. Komentar. The C++ kompajler će ovo preskočiti.
  8. Stvaranje varijable i pomoću for petlje. Ova varijabla će iterirati preko indeksa reda niza.
  9. Stvaranje varijable j pomoću for petlje. Ova varijabla će iterirati preko indeksa stupaca niza.
  10. Početak tijela petlji.
  11. Ispišite vrijednosti varijabli i i j na konzoli unutar uglatih zagrada na konzoli.
  12. Ispišite vrijednost pohranjenu na indeksu [i][j] niza a.
  13. Kraj tijela petlji.
  14. Funkcija main() trebala bi vratiti vrijednost cijelog broja ako program dobro radi.
  15. Kraj tijela funkcije main().

Trodimenzionalni niz

3D niz je niz nizova. Svaki element u 3D nizu identificiran je skupom od 3 indeksa. Za pristup elementima 3D niza koristimo tri for petlje. Na primjer:

#include<iostream>
using 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";
}

Izlaz:

Trodimenzionalni niz

Evo snimke zaslona koda:

Trodimenzionalni niz

Objašnjenje koda:

  1. Uključivanje iostream datoteke zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
  2. Uključivanje std imenskog prostora kako bi se njegove klase i funkcije koristile bez pozivanja.
  3. Poziv main() funkcije unutar koje treba dodati logiku programa.
  4. Početak tijela funkcije main().
  5. Deklaracija 3D niza pod nazivom an veličine 2x3x2. Vrijednosti niza također su inicijalizirane.
  6. Pristupanje stavci pohranjenoj na indeksu [0][1][0] niza i njezin ispis na konzoli.
  7. Pristupanje stavci pohranjenoj na indeksu [0][1][1] niza i njezin ispis na konzoli.
  8. Kraj tijela funkcije main().

Pokazivač na niz

A pokazivač je varijabla koja sadrži adresu. Osim korištenja pokazivača za pohranjivanje adrese varijable, možemo ga koristiti za pohranjivanje adrese ćelije polja. Ime niza stalno ukazuje na njegov prvi element. Razmotrite izjavu danu u nastavku:

int age[5];

Dob je pokazivač na $age[0], adresu prvog elementa niza pod nazivom age. Razmotrite sljedeći primjer:

#include <iostream>
using namespace std;
int main()
{
	int *john;

	int age[5] = { 19, 18, 21, 20, 17 };

	john = age;

	cout << john << "\n";

	cout << *john;
	
}

Izlaz:

Pokazivač na niz

Imajte na umu da prva vrijednost gornjeg izlaza može vratiti različitu vrijednost ovisno o adresi dodijeljenoj prvom elementu niza u memoriji vašeg računala.

Evo snimke zaslona koda:

Pokazivač na niz

Objašnjenje koda:

  1. Uključivanje iostream datoteke zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
  2. Uključivanje std imenskog prostora kako bi se njegove klase i funkcije koristile bez pozivanja.
  3. Poziv main() funkcije unutar koje treba dodati logiku programa.
  4. Početak tijela funkcije main().
  5. Deklaracija pokazivačke varijable imena *john.
  6. Deklaracija niza cijelih brojeva pod nazivom age za pohranjivanje 5 cijelih brojeva. Vrijednosti cijelih brojeva također su inicijalizirane.
  7. Dodjeljivanje varijabli john vrijednosti adrese stavke pohranjene u prvom indeksu polja age.
  8. Ispis vrijednosti varijable john, koja je adresa stavke pohranjene u prvom indeksu polja age.
  9. Ispis prve vrijednosti pohranjene u polju age.
  10. Kraj tijela funkcije main().

Imena nizova mogu se koristiti kao konstantni pokazivači, a vrijedi i obrnuto. To znači da možete pristupiti vrijednosti pohranjenoj na indeksu 3 polja age sa *(age + 3). Na primjer:

#include <iostream>
using namespace std;

int main() {
	// an array of 5 elements.
	int age[5] = { 19, 18, 21, 20, 17 };
	int *p;

	p = age;

	// output array values

	cout << "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;
}

Izlaz:

Pokazivač na niz

Evo snimke zaslona koda:

Pokazivač na niz

Objašnjenje koda:

  1. Uključivanje iostream datoteke zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
  2. Uključivanje std imenskog prostora kako bi se njegove klase i funkcije koristile bez pozivanja.
  3. Pozivanje funkcije main() i početak tijela funkcije main().
  4. Komentar. The C++ kompajler će ovo preskočiti.
  5. Deklaracija niza pod nazivom age za pohranjivanje 5 cijelih brojeva.
  6. Kreiranje cjelobrojnog pokazivača str.
  7. Dodjeljivanje p vrijednosti adrese prvog elementa niza age.
  8. Komentar. The C++ kompajler će ovo preskočiti.
  9. Ispišite tekst na konzoli.
  10. Stvorite cijeli broj x koristeći for petlju. { označava početak tijela for petlje.
  11. Ispišite vrijednosti x u kombinaciji s drugim tekstom na konzoli.
  12. Ispišite vrijednosti *(p + x) na konzoli.
  13. Kraj tijela for petlje.
  14. Ispišite tekst na konzoli.
  15. Stvorite varijablu x pomoću for petlje. { označava početak tijela for petlje.
  16. Ispišite vrijednosti x od 0 do 4 uz neki drugi tekst.
  17. Ispišite vrijednosti *(dob + x).
  18. Kraj tijela for petlje.
  19. Povratna vrijednost ako se program uspješno izvodi.
  20. Kraj tijela funkcije main().

Pristup vrijednostima polja

Elementima niza se pristupa pomoću njihovih odgovarajućih indeksa. Indeks elementa kojemu se pristupa dodaje se unutar uglatih zagrada [ ] odmah nakon naziva niza. Na primjer:

int john = age[2];

U gornjem primjeru jednostavno navodimo da je Johnova dob pohranjena na indeksu 2 niza pod nazivom age. To znači da je Ivan star 3 godinerd vrijednost u polju age. Ovdje je kompletan C++ primjer koji pokazuje kako pristupiti i ispisati ovu vrijednost:

#include<iostream>
using namespace std;
int main()
{
	int age[5] = { 19, 18, 21, 20, 17 };
	int john = age[2];
	cout << "The age of John is:"<<john;
}

Izlaz:

Pristup vrijednostima polja

Evo snimke zaslona koda:

Pristup vrijednostima polja

Objašnjenje koda:

  1. Uključivanje iostream datoteke zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
  2. Uključivanje std imenskog prostora kako bi se njegove klase i funkcije koristile bez pozivanja.
  3. Pozivanje funkcije main() unutar koje treba dodati kod.
  4. Početak tijela funkcije main().
  5. Deklaracija niza pod nazivom age za pohranu 5 cjelobrojnih elemenata.
  6. Pristupanje vrijednosti pohranjenoj na indeksu 2 niza age i pohranjivanje njene vrijednosti u varijablu naziva john.
  7. Ispis vrijednosti varijable john na konzoli uz ostali tekst.

Prednosti niza u C++

Ovdje su prednosti/prednosti korištenja značajke Array C++:

  • Elementi niza mogu se lako prelaziti.
  • Jednostavan za rukovanje niz podataka.
  • Elementima niza može se pristupiti nasumično.
  • Nizovi olakšavaju optimizaciju koda; dakle, možemo obaviti mnogo posla koristeći manje koda.
  • Jednostavan za sortiranje niza podataka.

Nedostaci niza u C++

  • Niz ima fiksnu veličinu; stoga mu ne možemo dodavati nove elemente nakon inicijalizacije.
  • Dodjeljivanje više memorije od zahtjeva dovodi do gubitka memorijskog prostora, a manje dodjele memorije može stvoriti problem.
  • Broj elemenata koji se pohranjuju u niz mora biti poznat unaprijed.

rezime

  • Niz je struktura podataka koja pohranjuje elemente iste vrste podataka.
  • Elementi polja pohranjuju se sekvencijalno.
  • Elementi niza označeni su svojim odgovarajućim indeksima. Prvi element je na indeksu 0, dok je zadnji element na indeksu n-1, gdje je ukupan broj elemenata niza.
  • Deklaracija niza uključuje definiranje tipova podataka elemenata niza kao i broja elemenata koji će biti pohranjeni u nizu.
  • Jednodimenzionalni niz pohranjuje elemente sekvencijalno.
  • Dvodimenzionalni niz pohranjuje elemente u retke i stupce.
  • Trodimenzionalni niz je niz nizova.
  • Elementi se mogu dodavati nizu pomoću svojih indeksa.
  • Elementima niza se pristupa pomoću njihovih indeksa.
  • Višedimenzionalni niz ima više od jedne dimenzije.
  • Naziv niza pokazuje na njegov prvi element.
  • Nizovi imaju fiksnu veličinu, što znači da se novi elementi ne mogu dodavati nizu nakon njegove inicijalizacije.