•Mishu91
|
|
« : Aprilie 02, 2008, 18:10:09 » |
|
Am citit zilele trecute despre vectorii din STL... cu ce e mai bun un vector declarat vector<int> v decat int v[N]?
|
|
|
Memorat
|
|
|
|
•wefgef
|
|
« Răspunde #1 : Aprilie 02, 2008, 18:16:02 » |
|
Pai daca vrei sa retii un graf cu liste de adiacenta nu poti cu vectori alocati static, in shimb vector<int> face treaba .
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•Mishu91
|
|
« Răspunde #2 : Aprilie 02, 2008, 18:28:42 » |
|
adica vector<int> v tine loc listelor, va sa zica
|
|
|
Memorat
|
|
|
|
•Cosmin
|
|
« Răspunde #3 : Aprilie 02, 2008, 18:33:00 » |
|
Nu tine locul listelor. Intr-un vector redimensionabil stergi/inserezi un element in O(n) pe cand intr-o lista daca esti deja pe pozitia pe care vrei stergi/inserezi in O(1).
|
|
|
Memorat
|
|
|
|
•Mishu91
|
|
« Răspunde #4 : Aprilie 02, 2008, 18:36:39 » |
|
v.pop_back() are complexitate O(n) ?
|
|
|
Memorat
|
|
|
|
•wefgef
|
|
« Răspunde #5 : Aprilie 02, 2008, 18:49:04 » |
|
Nu, pop_back() e O(1).
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•sima_cotizo
|
|
« Răspunde #6 : Aprilie 02, 2008, 18:53:46 » |
|
El se referea la push_back, cred... stiam ca push_back e O(n) doar cand V.size() e putere a lui 2 (si face redimensionare)... gresesc?
|
|
|
Memorat
|
|
|
|
•DITzoneC
|
|
« Răspunde #7 : Aprilie 02, 2008, 18:56:50 » |
|
push_back() e O(1) amortizat. Intr-adevar cand vectorul se umple isi dubleaza spatiul alocat si cand este mai putin de jumatate plin isi injumatateste spatiul alocat (cred ). Cred ca se referea la erase(x) care este O(n), stergerea unui element din interiorul vectorului (x - iterator)
|
|
|
Memorat
|
|
|
|
•Mishu91
|
|
« Răspunde #8 : Aprilie 02, 2008, 19:05:42 » |
|
Iar daca vreau sa fac lee cu alocare dinamica de exemplu, ce e mai bine sa folosesc... vectori din stl sau liste simplu inlantuite?
|
|
|
Memorat
|
|
|
|
•bogdan2412
|
|
« Răspunde #9 : Aprilie 02, 2008, 19:06:51 » |
|
Vectorii cred ca ocupa mai putina memorie (la list trebuie si 2 pointeri pt prev si next) si diferenta de performanta e insesizabila
|
|
|
Memorat
|
|
|
|
•Mishu91
|
|
« Răspunde #10 : Aprilie 02, 2008, 19:09:52 » |
|
Oricum e mai usoara scrierea cu vectori decat cu liste Multzam fain L.E. Cum se poate face o sortare a vectorului folosind functia sort(din stl)... care sunt parametrii
|
|
« Ultima modificare: Aprilie 02, 2008, 19:25:21 de către Andrei Misarca »
|
Memorat
|
|
|
|
•cos_min
|
|
« Răspunde #11 : Aprilie 02, 2008, 19:29:32 » |
|
Oricum e mai usoara scrierea cu vectori decat cu liste Multzam fain L.E. Cum se poate face o sortare a vectorului folosind functia sort(din stl)... care sunt parametrii vector<int> L; ........ sort( L.begin(), L.end() );
|
|
|
Memorat
|
vid...
|
|
|
•fireatmyself
|
|
« Răspunde #12 : Aprilie 02, 2008, 23:28:54 » |
|
Poti intra aici pentru a te documenta.
|
|
|
Memorat
|
Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
|
|
|
•devilkind
|
|
« Răspunde #13 : Aprilie 02, 2008, 23:36:48 » |
|
vector<int> L; ........ sort( L.begin(), L.end() );
chestia asta o folosesti cand sortezi crescator. Daca vrei sa sortezi altfel adaugi o functie de comparare: int cmp( tip a, tip b) { //returneaza 1 daca a trebuie sa apara inaintea lui b, 0 invers }
....
sort(v.begin(), v.end(), cmp);
De asemenea poti sa folosesti pairuri pentru a evita functia de comparare. Daca ai un vector de pairuri si ii dai sort fara functie de comparare va sorta crescator dupa first si in caz de egalitate dupa second (bineinteles chestia aste merge recursiv, adik pot sa am si un vector de genu : vector< pair< pair< pair < pair <int, int> , int> ,int >, int > ).
|
|
|
Memorat
|
|
|
|
•wefgef
|
|
« Răspunde #14 : Aprilie 02, 2008, 23:52:13 » |
|
Daca vrei sa sortezi descrescator poti sa dai sort(v.rbegin(), v.rend());
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•byndrsn
Client obisnuit
Karma: 19
Deconectat
Mesaje: 72
|
|
« Răspunde #15 : Aprilie 03, 2008, 03:50:13 » |
|
Sau sort(v.begin(), v.end(), greater<int>());
|
|
|
Memorat
|
|
|
|
•Tabara
|
|
« Răspunde #16 : Aprilie 03, 2008, 07:40:03 » |
|
sau sort(v.begin(), v.end() ); reverse( v.begin(), v.end() );
|
|
|
Memorat
|
|
|
|
|
•Mishu91
|
|
« Răspunde #18 : Aprilie 03, 2008, 23:13:55 » |
|
Foarte tare saitu, explica foarte bine si pentru incepatori in stl si alte chestii de genu
|
|
|
Memorat
|
|
|
|
•Cosmin
|
|
« Răspunde #19 : Aprilie 05, 2008, 00:34:45 » |
|
|
|
|
Memorat
|
|
|
|
•Mishu91
|
|
« Răspunde #20 : Aprilie 06, 2008, 19:42:01 » |
|
Am o intrebare... am fragmentu asta de cod vector <char *> v;
void citire() { char s[100]; scanf("%d",&n); for(int i=0; i<n; i++) { scanf("%s",&s); int k = strlen(s); if(s[k-1] == '\n') s[k-1] = 0; v.push_back(s); printf("%s\n",v.back()); } for(vector <char *> :: iterator it = v.begin(); it!= v.end(); it++) printf("%s\n",*it); } in fisieru de intrare am 5 asdaf dsfsdfasdf sadfsrcr c sdcsdf si uite ce afisaza asdaf dsfsdfasdf sadfsrcr c sdcsdf sdcsdf sdcsdf sdcsdf sdcsdf sdcsdf
care-i explicatia logica a faptului ca la sfarsit tot vectoru e plin doar cu ultima chestie?
|
|
|
Memorat
|
|
|
|
•DITzoneC
|
|
« Răspunde #21 : Aprilie 06, 2008, 19:48:03 » |
|
Tu ai aici un vector de pointeri in care introduci de N ori adresa lui s(s este si el un pointer). Deci in final afisezi de N ori ce se afla la adresa lui s adica exact ultimul sir de carctere citit.
|
|
|
Memorat
|
|
|
|
•Mishu91
|
|
« Răspunde #22 : Aprilie 06, 2008, 19:53:38 » |
|
Si dak vreu sa retin in v cuvinte(siruri de caractere) cam ce ar trebui sa fac?
|
|
|
Memorat
|
|
|
|
•DITzoneC
|
|
« Răspunde #23 : Aprilie 06, 2008, 20:00:02 » |
|
Eu folosesc string pentru asta. Este si mai usor de folosit(de exemplu ai definit operatorul + pentru concatenare). Si la afisare trebuie sa faci doar ceva de genu printf("%s",x.c_str()). Si conversia din char * in string este deja definita.
|
|
« Ultima modificare: Aprilie 06, 2008, 20:08:31 de către Adrian Diaconu »
|
Memorat
|
|
|
|
•Mishu91
|
|
« Răspunde #24 : Aprilie 06, 2008, 20:03:27 » |
|
Si cum se defineste?
|
|
|
Memorat
|
|
|
|
|