Sunteți pe pagina 1din 4

TDA Vector.

Pentru folosirea containerului vector se d antetul: #include <vector> TDA vector generalizeaz conceptul de tablou cu o dimensiune. Abstractizarea permite mrirea sau micorarea coleciei n cursul execuiei. Accesul la orice element se face n timp constant. peratorul de indexare nu asigur verificarea indicelui !dac se ncadreaz n domeniu". #nserarea i tergerea la sf$rit se face n O(1), iar n celelalte poziii n O(n). %iind un container parametrizat& la instaniere se declar: vector<int> x(10,1); //vector de 10 intregi initializati cu 1 vector<double> y(20);//vector de 20 reali neinitializati 1. Operaii asupra TDA vector. '.constructori vector<T> v; //c tor i!"licit vector<T>v(int); //c tor cu di!en#$ initializata vector<T>v(int, T); //c tor cu di!en#iune #i //valoare initiala vector<T>v(vec); //c tor de co"iere (.acces la elemente v%i& //ele!entul din "ozitia i v$'ront() //"ri!ul ele!ent v$bac(() //ulti!ul ele!ent ).inserri v$"u#)*bac((T); //adaugare ele!ent la #'ar#it v$in#ert(iterator, T);//in#erare ele!ent du"a iterator v$#+a"(vector<T>); //inter#c)i!b cu alt vector *.tergeri v$"o"*bac((); //#terge ulti!ul ele!ent v$era#e(iterator); //#terge ele!entul indicat de iterator v$era#e(iterator, iterator); //#terge ele!entele din interval %olosirea funciilor in#ert() i era#e() invalideaz toi iteratorii. +. dimensionri v$ca"acity(); //!e!oria rezervata "t$vector v$#ize(); //!e!oria ocu"ata de vector v$re#ize(int, T);//#c)i!barea di!en#iunii v$re#erve(); //realocare !e!orie "t$vector v$e!"ty(); //te#t vector vid ,. iteratori vector<T>,,iterator it; //declara un iterator v$begin(); //iterator de "ornire(la "ri!ul ele!) v$end(); //iterator de o"rire(du"- ulti!ul) 2. Algoritmi generici. //"une in intervalul%",u) valoarea val te!"late <cla## .+d/t, cla## T> void 'ill(.+d/t ",.+d/t u, con#t T0 val) //co"iaza ele!entele din intervalul %",u) la de#tinatia d, //intoarce "ozitia de du"a ulti!a te!"late<cla## /n/t, cla## Out/t> Out/t co"y(/n/t ", /n/t u, Out/t d); //deter!ina "ri!a "ozitie i din intervalul%",u)a#t'el ca 1i<12 #a 'ie 'al# te!"late<cla## .+d/t> .+d/t !ax*ele!ent(.+d/t ", .+d/t u);

'

//deter!ina "ri!a "ozitie i din intervalul%",u)a#t'el ca "r(1i,12) #a 'ie 'al# te!"late<cla## .+d/t, cla## 3red> .+d/t !ax*ele!ent(.+d/t ", .+d/t u, 3red "r); //"entru 'iecare "ozitie " din %",u) #e intoarce '(1") te!"late<cla## /n/t, cla## .un> .un 'or*eac)(/n/t ", /n/t u, .un '); //cele doua #ecvente %"1,u1) #i %"2,u2) ordonate cu relatia de ordine < #unt //intercla#ate #i de"u#e la d a$i$ #ecventa #a ra!ana ordonata //intoarce "ozitia de du"a ulti!ul ele!ent de#t te!"late<cla## /n/t1, cla## /n/t2, cla## Out/t> Out/t !erge(/n/t1 "1, /n/t1 u1, /n/t2 '"2, /n/t2 u2, Out/t d); //cele doua #ecvente %"1,u1) #i %"2,u2) ordonate cu relatia de ordine 3r #unt //intercla#ate #i de"u#e la d a$i$ #ecventa #a ra!ana ordonata //cu aceea#i relatie de ordine$ /ntoarce "ozitia de du"a ulti!ul ele!ent de#tinatie te!"late<cla## /n/t1, cla## /n/t2, cla## Out/t, cla## 3red> Out/t !erge(/n/t1 "1, /n/t1 u1, /n/t2 "2, /n/t2 u2, Out/t d, 3red "r); //#ecventele #ortate %",!) #i %!,u) #unt a!e#tecate ai #ecventa %",u) #a 'ie #ortata te!"late<cla## 4id/t> void in"lace*!erge(4id/t ", 4id/t !, 4id/t u); //#ecventele %",!) #i %!,u) ordonate cu relatia de ordine "r #unt a!e#tecate a$i$ // #ecventa %",u) #a 'ie ordonata cu acela#i criteriu te!"late<cla## 4id/t, cla## 3red> void in"lace*!erge(4id/t ", 4id/t !, 4id/t u, 3red "r); 3.Implementarea clasei vector. te!"late <cla## T> cla## vector5 "rotected, int ne; //nu!ar de ele!ente int di!; //#"atiu alocat "entru vector T1 data; //zona de date "ublic, ty"ede' T1 iterator; vector(int n60)5 data60; re#ize(n);7; vector(int n, con#t T0 vi); vector(con#t vector0 v); 8vector()5delete%&data;7; T0 o"erator%&(int ()5return data%(&;7; int #ize()con#t5return ne;7; int ca"acity()con#t5return di!;7; int e!"ty()con#t5return ne660;7; void re#ize(int) 5 re#erve(d); di! 6 d; 7; void re#erve(int); T 'ront()5return 1data;7; T bac(() 5return data%ne 1&;7; void in#ert(iterator,T); void #+a"(vector0); iterator begin()5return data;7; iterator end() 5return data9ne;7; void "u#)*bac((con#t T0); void "o"*bac(()5ne ;7; 7 te!"late <cla## T> vector<T>,,vector(int n)5 data60; re#ize(n); 7 te!"late <cla## T> vector<T>,,vector(int n, con#t T0 vi)5 data60; re#ize(n); 'ill(begin(),end(),vi);

7 te!"late <cla## T> vector<T>,,vector(con#t vector0 v)5 data60; re#ize(v$#ize()); co"y(v$begin(),v$end(),begin()); 7 te!"late <cla## T> void vector<T>,,re#erve(int c)5 i'(data660)5 ne60; di!60; 7; i'(c <6 di!) return; T1 datan 6 ne+ T%c&; a##ert(datan); co"y(data, data9ne, datan); di! 6 c; delete %& data; data 6 datan; 7 te!"late <cla## T> void vector<T>,,"u#)*bac((T val)5 i'(ne >6 di!) re#erve(di!9/:;); data%ne99& 6 val; 7 te!"late <cla## T> void vector<T>,,era#e(iterator crt)5 iterator du"a 6 crt; +)ile(99du"a<6end())5 1crt99 6 1du"a; 7; te!"late <cla## T> void vector<T>,,era#e(iterator #tart, iterator #to") 5 +)ile(#tart<6#to") era#e(#tart); 7; 4. Implementarea algoritmilor generici. //algorit!i generici te!"late <cla## /trT, cla## T> void 'ill(.+d/t ", .+d/t u,con#t T0 val)5 +)ile("<6u) 1"99 6 val; 7; te!"late <cla## /n/t, cla## Out/t> void co"y(/n/t ", /n/t u, Out/t de#t)5 +)ile("<6u) 1de#t99 6 1"99; 7; //algorit!i generici "t$vectori #ortati te!"late <cla## 4id/t> void in"lace*!erge(4id/t ", 4id/t !, 4id/t u)5 int d 6 u "; vector<T> te!"(d); !erge(",!,!,u,te!"$begin()); co"y(te!"$begin(),te!"$end(),"); 7; te!"late <cla## /n/t1, cla## /n/t2, cla## Out/t> void !erge(/n/t1 "1, /n/t1 u1, /n/t2 "2, /n/t2 u2, Out/t de#t)5 +)ile("1<6u1 00 "2<6u2) i'(1"1 < 1"2) 1de#t99 6 1"199; el#e

1de#t99 6 1"299; +)ile("1<6u1) 1de#t99 6 1"199; +)ile("2<6u2) 1de#t99 6 1"299; 7; 5.Probleme propuse. '. -criei un program .//& care utilizeaz -T0 !biblioteca de abloane standard" pentru a extrage dintr1un fiier text toate cuvintele distincte i a le introduce ntr1un container vector& mpreun cu numrul de apariii ale cuv$tului i numerele liniilor din fiierul text n care apare cuv$ntul. -e va trece apoi coninutul containerului ntr1un fiier binar numit 2index2. Pentru lucrul cu fiiere se vor utiliza facilitile oferite de .//. (.

S-ar putea să vă placă și