Curs C++ | Sectiunea 12 – Vectori

 

Se va intampla la un moment sa avem nevoie de a citi, stoca, procesa si afisa poate sute, mii sau chiar chiar, sute de mii de numere. Ce putem face in acest caz? Declaram cate o variabila separata pentru fiecare numar? Este un proces redundant ce ne va consuma enorm de mult timp.

int var1, var2, var3, var4, var5, var6, var7, var8, var9 ... ;

💡 Pana acum, am declarat variabile ce pot stoca o singura variabila la un anumit moment in timp. Aceste variabile sunt numite scalari, asemenea celor din matematica. Toate tipurile de variabile (int, char, float …) pe care le-am folosit pana acum sunt de fapt scalari.

❗ Pentru a rezolva aceasta problema, C++ (si aproape orice limbaj de programare) ne pune la dispozitie o variabila ce poate stoca multiple valori in acelasi timp (multi-value variable).

 

Vectori

int numere[10];

💡 In exemplul de mai sus cream o variabila numere (ce are ca scop stocarea a 10 numere) de tip int. Altfel spus, variabila numere este un sir ce contine 10 valori de tip int.  Un astfel de sir este denumit si vector in matematica.

❗ Toate elementele acestui sir au acelasi tip, fara vreo exceptie. Mai mult, C++ are o conventie ce spune ca elementele unui sir sunt numerotate incepand de la 0. Astfel ca in exemplul nostru, vom numara elementele de la 0 pana la 9.

📝Nota: vectorul nostru este o colectie de elemente, unde fiecare element este un scalar.

Mai departe analizam cum putem asigna valori si cum le putem accesa.

//asignam valoare pe primul element
numere[0] = 100;

//salvam valoarea elemenului 3 in x
int x = numere[2];

//copiem valoarea unui element in alt element
numere[5] = numere[0];

❗ Valoarea din interiorul parantezelor drepte, ce selecteaza unul din elementele vectorului, poarta numele de index iar operatia de selectare a unui element din sir este cunoscuta ca indexare.

📝Nota: toti indicii folositi pana acum sunt literali, avand valoarea fixa la run time, dar pot fi folosite si expresii ca index.

Spre exemplu, am putea calcula suma elementelor vectorului folosind un for:

int numbere[10], suma = 0;

for(int i = 0; i < 10; i++)
{
suma += numbere[i];
}

Ne definim o variabila de tip int suma ce o initializam cu 0. Parcurgem toate elementele vectorului si calculam suma lor folosind instructiunea for. Variabila i va lua valori de la 0 pana la 9 si va fi folosita pentru accesarea fiecarui element in parte.

 

Initiatori

❓ Daca te-ai intrebat daca putem initializa un sir raspunsul este da, putem asigna valori chiar in momentul declararii. Initializarea este oarecum diferita de scalari deoarece trebuie sa specificam mai mult de o valoare.

int vector[5] = {0,1,2,3,4};

In cazul in care specificam mai putine valori decat dimensiunea sirului, nu se va intampla nimic rau. Compilatorul va seta acele elemente cu valorea 0.

int vector[5] = {0,1,2};

❗ Totusi, daca specificam mai multe elemente decat dimensiunea sirului vom primi o eroare error: too many initializers for ‘int [5]’ .

int vector[5] = {0,1,2,3,4,5,6}; 

💡 Ultima metoda in care putem initia un sir este fara sa ii specificam dimensiunea. Nu vom primi o eroare iar compilatorul va presupune dimensiunea sirului ca fiind egala cu dimensiunea initiatorului.

int vector[] = {0,1,2,3,4,5}; 

 

Aici se termina si aceasta sectiune. Vom mai reveni la vectori si siruri cand ii vom studia pe cei din std::vector.

Daca aveti intrebari suplimentare puteti folosi informatiile de aici. 🙂

➡ Sectiunea anterioara:Curs C++ | Sectiunea 11 – Switch

➡ Sectiunea urmatoare:Curs C++ | Sectiunea 13 – Siruri de siruri

You may also like...