Pagini: [1] 2   În jos
  Imprimă  
Ajutor Subiect: Standard Template Library (STL)  (Citit de 45037 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
stef2n
Nu mai tace
*****

Karma: 218
Deconectat Deconectat

Mesaje: 641



Vezi Profilul
« : Februarie 20, 2009, 01:59:28 »

Comentarii la articolul Standard Template Library (STL)
Memorat

Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
APOCALYPTO
Nu mai tace
*****

Karma: 3
Deconectat Deconectat

Mesaje: 250



Vezi Profilul
« Răspunde #1 : Februarie 01, 2010, 19:45:27 »

reverse=strrev
search=strstr si asa mai departe.
Am o intrebare functiile din STL sunt mai rapide decat cele din string.h sau la fel (banuiesc ca mai incete nu au cum sa fie :-j)?
Multumesc anticipat pentru raspuns Smile.
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #2 : Februarie 01, 2010, 21:39:54 »

reverse si search is pentru orice tip de container nu doar pentru string.
Toate functiile din STL au fost optimizate pana la refuz, trage tu concluzia Tongue

Tot folosind copy se poate si citi din fisier. Numai ca copiaza tot continutul nu doar o anumita parte Smile
Cod:
copy( istream_iterator<int>(in), istream_iterator<int>(), back_inserter(v) );
Memorat
APOCALYPTO
Nu mai tace
*****

Karma: 3
Deconectat Deconectat

Mesaje: 250



Vezi Profilul
« Răspunde #3 : Februarie 01, 2010, 22:16:15 »

reverse si search is pentru orice tip de container nu doar pentru string.
Toate functiile din STL au fost optimizate pana la refuz, trage tu concluzia Tongue

Tot folosind copy se poate si citi din fisier. Numai ca copiaza tot continutul nu doar o anumita parte Smile
Cod:
copy( istream_iterator<int>(in), istream_iterator<int>(), back_inserter(v) );
Alexandru stiam ce ai zis mai sus(in afara de chestia cu fisierul) dar nu asta e ceea ce vroiam sa aud. Vreau sa stiu daca pierd ceva din timp daca folosesc strrev strstr str*** ? Normal ca au fost optimizate la maxim asta e logic mai ales ca au fost create dupa string.h, dar vreau un raspuns concret pentru intrebarea precedenta:).
Memorat
Marius
Nu mai tace
*****

Karma: 154
Deconectat Deconectat

Mesaje: 572



Vezi Profilul
« Răspunde #4 : Februarie 01, 2010, 22:33:41 »

Alexandru stiam ce ai zis mai sus(in afara de chestia cu fisierul) dar nu asta e ceea ce vroiam sa aud. Vreau sa stiu daca pierd ceva din timp daca folosesc strrev strstr str*** ? Normal ca au fost optimizate la maxim asta e logic mai ales ca au fost create dupa string.h, dar vreau un raspuns concret pentru intrebarea precedenta:).

În opinia mea, ai face bine să foloseşti STLul. Nu ştiu cu cât e mai rapid, dar cu siguranţă diferenţa dintre ele e nesemnificativă. STLul plusează prin uşurinţa utilizării.

Văd că ai început să scrii ordonat. Bravo. Smile
Memorat

Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #5 : Februarie 01, 2010, 22:35:21 »

strrev este   deprecated, pentru versiuni mai noi de compilatoare nici macar nu apare Smile.
Cat despre strstr alege care vrei,  atat strstr cat si search au ca si complexitate in cel mai rau caz O( m*n ) desi in medie e liniar Wink
Per general poti folosi pe care vrei tu ( desi eu iti recomand mai bine STL , ii mai modern ) numai nu fa o varza din ele Smile
Memorat
APOCALYPTO
Nu mai tace
*****

Karma: 3
Deconectat Deconectat

Mesaje: 250



Vezi Profilul
« Răspunde #6 : Februarie 01, 2010, 23:23:41 »

numai nu fa o varza din ele Smile

Bine zis! La clasa din pacate nu facem ceea ce avem nevoie pentru olimpiada( nu folosim algoritmi optimi, folosim matrice in loc de liste de adiacenta la grafuri, nu folosim STL, folosim backtarcking iterativ in loc de recursiv si altele). Deci exista "pericolul" de a face o varza intre ce e bun pentru noi olimpicii si ce e bun pentru nivelul de la clasa pentru ca si noi trebuie sa dam lucrari Smile.
« Ultima modificare: Februarie 01, 2010, 23:31:26 de către Calin Dragos Ion » Memorat
nautilus
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #7 : Februarie 09, 2010, 22:43:13 »

Am o intrebare:
Daca la o problema trebuie sa fac Debug, iar in Watch imi pun un vector (un vector din STL), nu imi apar valorile pe care le are vectorul.
Cum ar trebui sa fac ca sa pot vedea totusi ce valori am in vector?  Confused
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #8 : Februarie 09, 2010, 22:47:45 »

Daca ai vector<int>A, sa zicem, poti da sa iti afiseze in watch A[ i ]. Asta merge. Practic, poti cere sa iti afiseze un singur element ( iti afiseaza si adresa de memorie ). Altfel nu ai cum. O solutie ar fi sa faci debug cu printf()-uri. Spor !  Smile
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #9 : Februarie 10, 2010, 00:18:44 »

Sau sa faci debug in Visual C++.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
nautilus
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #10 : Februarie 10, 2010, 21:23:09 »

nu vreau in Visual C++, vreau sa raman in MinGW  Smile .... am incercat cu A si ma multumeste deocamdata...
Multumesc pt sfaturi  wink
Memorat
APOCALYPTO
Nu mai tace
*****

Karma: 3
Deconectat Deconectat

Mesaje: 250



Vezi Profilul
« Răspunde #11 : Februarie 10, 2010, 23:14:39 »

Am o intrebare:
Daca la o problema trebuie sa fac Debug, iar in Watch imi pun un vector (un vector din STL), nu imi apar valorile pe care le are vectorul.
Cum ar trebui sa fac ca sa pot vedea totusi ce valori am in vector?  Confused
Ba merge:p
Modifici countul cum vrei tu si va afisa Very Happy. ( si bine inteles bifezi watch as array)
La orice structura de date la care ai operatorul [] va functiona watch-ul:)
« Ultima modificare: Februarie 10, 2010, 23:35:26 de către Calin Dragos Ion » Memorat
nautilus
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #12 : Februarie 14, 2010, 10:57:14 »

Am o intrebare:
Daca la o problema trebuie sa fac Debug, iar in Watch imi pun un vector (un vector din STL), nu imi apar valorile pe care le are vectorul.
Cum ar trebui sa fac ca sa pot vedea totusi ce valori am in vector?  Confused

Ba merge:p
Modifici countul cum vrei tu si va afisa Very Happy. ( si bine inteles bifezi watch as array)
La orice structura de date la care ai operatorul [] va functiona watch-ul:)

Stiu ca merge de exemplu sa vad ce valoare are v[100] sau v[5]... Eu ziceam ca nu merge cand folosesc vectorii din STL sa vad toate valorile vectorului atunci cand bag in Watch vectorul v simplu... adica nu mai imi apare: v= {0, 2, 3, 5}
Intrebarea mea era daca nu se poate face ceva sa vad toate valorile lui v pe acelasi rand, fara sa stau sa bag in watch v[0], v[1], v[2], v[3],...
Memorat
cipri_tom
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #13 : Martie 12, 2010, 16:34:44 »

Pai eu la vectorii STL ma refer.
 Si e adevarat ca nu ai cum sa vezi toate valorile vectorului( decat primele 1000 pentru ca pana acolo te lasa textbox-ul de la count sa maresti( dar nici nu ai nevoie mai mult totusi).
-bagi V ( care l-ai declarat vector<int> V) in casuta de la watch;
-bifezi watch as array;
-prima casuta de count lasi 0;
-si la a 2-a casuta de count maresti pana la 12.
Si cu asta vei vedea elementele din vector de la 0 pana la 12.

unde bifez "watch as array"? ... sau nu te referi la MinGw? si count? nu gasesc instructiunile tale pe MinGw
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #14 : Martie 12, 2010, 16:40:33 »

unde bifez "watch as array"? ... sau nu te referi la MinGw? si count? nu gasesc instructiunile tale pe MinGw
In MinGW nu ai aceste optiuni, in Code::Blocks cred ca se referea...
Memorat
miculprogramator
Nu mai tace
*****

Karma: 65
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #15 : Mai 31, 2010, 21:53:03 »

Salut !

M-am apucat de curand sa invat STL, pana acum m-am axat exclusiv pe libraria standard a C-ului, asa ca am cateva intrebari.

Banuiesc ca din moment ce se evalueaza altfel, avem voie cu STL la olimpiada. Am dreptate ?

Este mai bine sa folosesc vectorii declarati clasic sau vector <int> v ? Am aceeasi intrebare pentru stive/cozi.
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #16 : Mai 31, 2010, 23:01:30 »

În liceu vei avea voie să folosești STL la orice concurs.
Lucrul cu containerele STL (stive, cozi, vectori, etc.) este mult mai încet decât lucrul cu vectorii declarați clasic, dar în general este mult mai comod să folosești elemente din STL.
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #17 : Mai 31, 2010, 23:06:22 »

Nu e cu mult mai incet, n-am intalnit mai mult de 2-3 probleme in care sa se faca diferenta.
Memorat
BitOne
Strain
*

Karma: -1
Deconectat Deconectat

Mesaje: 45



Vezi Profilul
« Răspunde #18 : Iunie 01, 2010, 10:10:10 »

Este mai bine sa folosesc vectorii declarati clasic sau vector <int> v ? Am aceeasi intrebare pentru stive/cozi.
Totul depinde de context, de exemplu pt lista de adiacenta a unui graf e mult mai usor sa folosesti  vector din stl decat sa creezi tu listele simplu inlantuite, dar daca ai nevoie de un vector caracteristic, de exemplu, atunci e ilogic sa folosesti vector din stl. Totul depinde de context.
Memorat
miculprogramator
Nu mai tace
*****

Karma: 65
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #19 : Iunie 01, 2010, 12:18:33 »

Deci trebuie sa folosesc structurile de date clasice si algoritmii STL ? La grafuri n-am ajuns inca, asa ca deocamdata n-am treaba.
Memorat
popoiu.george
Vorbaret
****

Karma: 19
Deconectat Deconectat

Mesaje: 162



Vezi Profilul
« Răspunde #20 : Iunie 01, 2010, 13:43:24 »

Sunt de acord cu @BitOne . Nu poti spune exact pentru ce e mai bine sa folosesti STL si pentru ce nu. Ce iti pot spune din proprie experienta este ca te ajuta.

La structuri de date gen stiva, coada nu e mare diferenta. Le poti implementa static daca stii exact cat o sa introduci in ele. Daca nu, intervine STL ca sa nu iti mai bati capu cu implementarea lor dinamica.

Exemple asemanatoare apar si la utilizarea STL pentru hashing, arbori de cautare echilibrati, grafuri.

Ce este cert e ca trebuie sa experimentezi si iti vei da seama cand sa folosesti STL si cand nu. Ideea e ca poti salva mult timp si asta este crucial in concursuri.  Smile
Memorat
BitOne
Strain
*

Karma: -1
Deconectat Deconectat

Mesaje: 45



Vezi Profilul
« Răspunde #21 : Iunie 01, 2010, 13:58:50 »

Exemple asemanatoare apar si la utilizarea STL pentru hashing.
Defapt in cazul asta mai bine nu. Am incercat si nu se comporta foarte bine , in plus sunt implementate doar pentru un numar limitat de tipuri de data.
Eu as sugera sa se faca niste teste intre cele mai folosite functii din stl si aceleasi functii scrie de mana astfel lumea ar sti putin mai bine ce sa foloseasca Smile ( daca se face asa ceva as vrea sa ma implic si eu  Wink )
« Ultima modificare: Iunie 01, 2010, 14:59:28 de către SAlexandru » Memorat
miculprogramator
Nu mai tace
*****

Karma: 65
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #22 : Iunie 01, 2010, 15:09:36 »

Eu as sugera sa se faca niste teste intre cele mai folosite functii din stl si aceleasi functii scrie de mana astfel lumea ar sti putin mai bine ce sa foloseasca Smile

Cred ca asta ar fi foarte useful, un articol care sa cuprinda majoritatea functiilor gen sort, binary_search etc. din STL si cele implementate de mana.  Thumb up
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #23 : Iunie 01, 2010, 16:09:34 »

Pentru cele din STL găsești o documentație bună pe cplusplus.com
Memorat
popoiu.george
Vorbaret
****

Karma: 19
Deconectat Deconectat

Mesaje: 162



Vezi Profilul
« Răspunde #24 : Iunie 01, 2010, 16:27:37 »

@BitOne

Pentru hashing nu se comporta bine daca folosesti containerul map. Se pot folosi bibliotecile hash_set.h sau hash_map.h .
Pentru a le folosi trebuie inclus namespaceul __gnu_cxx

Cod:
....
#include<hash_set.h>
#include<hash_map.h>
....
using namespace __gnu_cxx
....

La problema din arhiva educationala (Hashing) se ia 70 cu map si 100 cu hash de mana sau folosind unul dintre containerele de mai sus.
hash_set -> http://infoarena.ro/job_detail/458114
Memorat
Pagini: [1] 2   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines