vector<> Դինամիկ զանգվածներ

Մինչ այս պահը մենք միշտ հայտարարել և օգտագործել ենք զանգվածներ դրանք հնարավորին մեծ սահմանելով և ապա դրանց մեջ արժեքներ ավելացնելով։ Սովորաբար այդ դեպքում ծրագրերը կարող էին ունենալ հետևյալ տեսքը՝

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) և ելքում տպել դրանց գումարը։

Մուտք

Ելք

3 4 -5.5 6

4.5

Constraints

Time limit: 0.4 seconds

Memory limit: 512 MB

Output limit: 5 MB

To check your solution you need to sign in
Sign in to continue