Vectori
Un vector (array), sau tablou de memorie este o colecţie de date stocate în locaţii succesive din memorie.
Toate elementele vectorului au acelaşi tip de dată. Un vector se declară în felul următor:
tip nume[numar_elemente];De exemplu, un vector cu 100 de întregi.
int yoyo[100];Numărătoarea elementelor începe de la zero.
Putem accesa şi modifica un element de-al vectorului cu următoarea sintaxă:
nume[index];De exemplu, pot atribui elementului al treilea valoarea 10.
yoyo[2] = 10;ATENŢIE: Primul element este
yoyo[0]
, iar ultimul este yoyo[99]
. Aceşti vectori se zic statici (static arrays) deoarece numărul de elemente şi spaţiul de memorie ocupat este constant în timpul compilării. (
numar_elemente
trebuie să fie o constantă). Vectorii declaraţi global, în afara oricărei funcţii, sunt iniţializaţi cu zero.
La declarare vectorii pot fi iniţializaţi, aşa cum sunt iniţializate variabilele, dar cu o sintaxă diferită.
int vec[3] = {1, 2, 3};Sau, doar în acest caz, puteţi omite numărul de elemente:
int vec[] = {1, 2, 3};Deoarece lungimea va fi dedusă de compilator pe baza numărului de date dintre acolade.
Parcurgerea unui vector se face cel mai simplu cu un loop, în general un
for
.
#include <iostream> using namespace std; int main() { int cifrePare[] = { 0, 2, 4, 6, 8 }; for (int i = 0; i < 5; i++) cout << cifrePare[i]; return 0; }ATENŢIE: Accesarea elementelor din afara vectorului - cum ar fi
cifrePare[5]
- poate produce rezultate neaşteptate, ca instabilitatea programului sau, în cel mai rău caz, un crash al programului.
Vectori multidimensionali
Vectorii multidimensionali sunt vectori ai vectorilor. Sintaxa generală de declarare este:
tip nume[nr_elem1][nr_elem2]...[nr_elemN]Aşa cum vedeţi, un vector poate avea oricâte dimensiuni vreţi. Totuşi, spaţiu de memorie fiind limitat, nu veţi întâlni vectori cu mai mult de 3 dimensiuni.
Un vector bidimensional poate fi imaginat ca o matrice (un tabel cu linii şi coloane).
De exemplu, matricea
int mat[5][3];
are 5 linii şi 3 coloane.În realitate, în memorie, elementele tot în ordine secvenţială sunt stocate. Vectorul (matricea) de mai sus este echivalent cu
int mat[15];
. Iniţializarea este similară cu cea a vectorilor unidimensionali:
int mat[2][3] = { {1, 2, 3}, {4, 5, 6} };Parcurgerea se face tot cu un
for
:
#include <iostream> using namespace std; int main() { int cifre[2][3] = { {1, 2, 3}, {4, 5, 6} }; for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) cout << cifre[i][j] << ' '; cout << '\n'; } return 0; }Observaţi cum se accesează elementul de pe linia i şi coloana j.
cifre[i][j];Programul va afişa:
1 2 3 4 5 6Primul element al matricei este
cifre[0][0]
, adică 1
.
Dacă nu vă place numărătoarea de la zero, puteţi declara vectorul cu 1 + nr_elemente, astfel încât să începeţi numărătoarea de la 1, dar să aveţi spaţiu pentru nr_elemente. Exemplu:
#include <iostream> using namespace std; int main() { int yoyo[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; for (int i = 1; i < 10; i++) cout << yoyo[i] << i << ' '; return 0; }Acum indicele
i
coincide cu yoyo[i]
. Primul element al vectorului,
yoyo[0]
, este ignorat, şi al doilea, yoyo[1]
, este considerat noul prim.
Niciun comentariu:
Trimiteți un comentariu
Rețineți: Numai membrii acestui blog pot posta comentarii.