Մինչ այս պահը մենք միշտ հայտարարել և օգտագործել ենք զանգվածներ դրանք հնարավորին մեծ սահմանելով և ապա դրանց մեջ արժեքներ ավելացնելով։ Սովորաբար այդ դեպքում ծրագրերը կարող էին ունենալ հետևյալ տեսքը՝
int main() {
int a[1000000];
int n;
cin >> n;
for (int i=0; i < n; ++i) {
cin >> a[i];
}
return 0;
}
Այս դեպքում նույնիսկ եթե n-ը լիներ 10, մենք միևնույնն է օգտագործելու էինք 1000000 ամբողջ թիվ պահելուն համապատասխան հիշողություն։ Սա կարող է նորմալ լինել փոքր ծրագրերի դեպքում, բայց երբ կարիք կա շատ զանգվածներ պահել և հիշողություն խնայել պետք է ավելի զգույշ վարվել զանգվածներ հայտարարելիս։
Շատ կարևոր է նշել որ չի կարելի հայտարարել զանգվածն ինչպես՝
int n;
cin >> n;
int a[n]; // Some compilers fail to process this
Այս դեպքում որոշ կոմպիլյատորներ սխալ են համարում ծրագիրը և չեն կոմպիլացնում ծրագիրը։ C++ում զանգվածները պետք է հայտարարվեն կոնստանտ չափերով և չեն կարող ունենալ փոփոխական չափ (այս դեպքում n-ը կարող է ընդունել շատ տարբեր արժեքներ)։
vector <type>
Որպեսզի հնարավոր լինի հայտարարել փոփոխական չափի զանգվածներ, կարելի է օգտագործել ստանդարտ գրադարանի vector տիպը։ Փոփոխական չափի զանգված հայտարարելու և ներմուծելու համար կարող ենք անել հետևյալը՝
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector <int> a(n); // կհայտարարի a զանգված, որը կունենա n էլեմենտ
for (int i=0; i < n; ++i) {
cin >> a[i];
}
return 0;
}
vector տիպի զանգված հայտարարելիս շատ կարևոր է նշել էլեմենտների տիպը։ Այսինքն եթե մենք int -երի զանգված հայտարարելիս գրում էինք int a[100], ապա vector հայտարարելիս կգրենք vector <int> a(100)։ vector-ի տիպը միշտ նշվում է չակերտների մեջ և կարող է լինել ցանկացած բան։ Այսինքն կարող ենք ունենալ vector <char> կամ vector <string> կամ vector <double> կամ vector <long long> և այլն։
Իսկ vector-ի չափը նշում ենք կլոր փակագծերի մեջ։ Այսինքն կարող ենք գրել vector <double> a(10) բայց օրինակ չենք կարող ունենալ vector <int> b(2.5)
Եթե ուղակի հայտարարենք vector <int> a; առանց չափը նշելու, ապա այն կունենա 0 էլեմենտ։
Վարժություն՝
Մուտքի առաջին տողում ունենալով n բնական թիվ, անհրաժեշտ է ներմուծել n հատ իրական թիվ (double) և ելքում տպել դրանց գումարը։