De ce contează?
Ai 10 cutii numerotate pe un raft, fiecare conținând câte un număr. Ca să iei numărul din cutia 3 nu deschizi toate cutiile — spui direct „cutia 3". Un vector funcționează exact la fel: o colecție de valori numerotate, accesate instant prin index.
Ce este un vector?
Un vector (sau tablou unidimensional) este o colecție de valori de același tip, stocate consecutiv în memorie și identificate printr-un index.
| v | 5 | 3 | 8 | 1 | 9 |
| index | 0 | 1 | 2 | 3 | 4 |
Trei proprietăți esențiale:
- Toate elementele au același tip (
int,long longetc.). - Indexul începe de la 0, nu de la 1.
- Accesul la orice element e O(1) — instant, indiferent de poziție.
Declarație și citire în C++
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n; // numarul de elemente
int v[1001]; // rezerva spatiu pentru max 1000 elem (index 0..999)
for (int i = 0; i < n; i++) {
cin >> v[i]; // citim element cu element
}
for (int i = 0; i < n; i++) {
cout << v[i] << " ";
}
return 0;
}Exemplu: Input 5 / 5 3 8 1 9 → Output 5 3 8 1 9
int v[1001] declarat în afara lui main (variabilă globală) e inițializat automat cu 0. Declarat în main, are valori nedefinite. La OJI/ONI, vectorii mari se declară global pentru a evita stack overflow și pentru inițializare automată.
Inițializare directă
int v[] = {5, 3, 8, 1, 9}; // n = 5, dedus automat
int w[5] = {0}; // toate elementele = 0
int a[5] = {1, 2}; // a[0]=1, a[1]=2, a[2]=a[3]=a[4]=0Accesul la elemente
cout << v[0]; // primul element: 5
cout << v[4]; // ultimul (din 5): 9
v[2] = 100; // modifica al treilea elementVizualizare
Construiește-ți propriul vector și vezi cum accesezi orice element direct prin index — instant, fără să parcurgi restul:
Folosește ← și → pentru a avansa pas cu pas, sau Redă pentru animație automată. Apasă Laborator ca să testezi cu vectorul tău.
Greșeala 1: v[n] — accesezi elementul cu index n, care e în afara vectorului (indici valizi: 0..n-1). Provoacă comportament nedefinit sau crash.
Greșeala 2: Declari int v[n] cu n citit din input — C++ standard nu permite tablouri cu dimensiune variabilă. Declară cu dimensiunea maximă din enunț: int v[1001].
Greșeala 3: Pornești bucla de la i = 1 în loc de i = 0 — ratezi primul element și citești unul în plus la sfârșit.
Recapitulare
- Un vector stochează mai multe valori de același tip, accesate prin index (de la 0).
- Declarația
int v[1001]rezervă spațiu; citirea se face cucin >> v[i]în buclă. - Indexul maxim valid este
n-1, nun.