infoarena

infoarena - concursuri, probleme, evaluator, articole => Articole => Subiect creat de: Stefan Istrate din Februarie 20, 2009, 01:59:28



Titlul: Standard Template Library (STL)
Scris de: Stefan Istrate din Februarie 20, 2009, 01:59:28
Comentarii la articolul Standard Template Library (STL) (http://infoarena.ro/stl)


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Dragos din 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 :).


Titlul: Răspuns: Standard Template Library (STL)
Scris de: alexandru din 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 :P

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


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Dragos din 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 :P

Tot folosind copy se poate si citi din fisier. Numai ca copiaza tot continutul nu doar o anumita parte :)
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:).


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Marius Stroe din 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. :)


Titlul: Răspuns: Standard Template Library (STL)
Scris de: alexandru din Februarie 01, 2010, 22:35:21
strrev este   deprecated, pentru versiuni mai noi de compilatoare nici macar nu apare :).
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 ;)
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 :)


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Dragos din Februarie 01, 2010, 23:23:41
numai nu fa o varza din ele :)

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 :).


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Cohal Alexandru din 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?  :?


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Florian Marcu din 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 !  :)


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Andrei Grigorean din Februarie 10, 2010, 00:18:44
Sau sa faci debug in Visual C++.


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Cohal Alexandru din Februarie 10, 2010, 21:23:09
nu vreau in Visual C++, vreau sa raman in MinGW  :) .... am incercat cu A si ma multumeste deocamdata...
Multumesc pt sfaturi  :wink:


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Dragos din 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?  :?
Ba merge:p
Modifici countul cum vrei tu si va afisa :D. ( si bine inteles bifezi watch as array)
La orice structura de date la care ai operatorul [] va functiona watch-ul:)


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Cohal Alexandru din 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?  :?

Ba merge:p
Modifici countul cum vrei tu si va afisa :D. ( 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],...


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Ciprian Tomoiaga din 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


Titlul: Răspuns: Standard Template Library (STL)
Scris de: alexandru din 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...


Titlul: Răspuns: Standard Template Library (STL)
Scris de: A Cosmina - vechi din 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.


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Andrei Misarca din 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.


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Pripoae Teodor Anton din 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.


Titlul: Răspuns: Standard Template Library (STL)
Scris de: SAlexandru din 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.


Titlul: Răspuns: Standard Template Library (STL)
Scris de: A Cosmina - vechi din 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.


Titlul: Răspuns: Standard Template Library (STL)
Scris de: George Popoiu din 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.  :)


Titlul: Răspuns: Standard Template Library (STL)
Scris de: SAlexandru din 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 :) ( daca se face asa ceva as vrea sa ma implic si eu  ;) )


Titlul: Răspuns: Standard Template Library (STL)
Scris de: A Cosmina - vechi din 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 :)

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.  :thumbup:


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Andrei Misarca din Iunie 01, 2010, 16:09:34
Pentru cele din STL găsești o documentație bună pe cplusplus.com (http://cplusplus.com/reference/algorithm/)


Titlul: Răspuns: Standard Template Library (STL)
Scris de: George Popoiu din 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


Titlul: Răspuns: Standard Template Library (STL)
Scris de: SAlexandru din Iunie 01, 2010, 16:37:26
@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
Multumesc, dar eu chiar la hash_set/hash_map/unordered_set/unordered_map ma refeream :)
App: pentru versiunile de g++ >= 4.3 trebuie hash_set sau hash_map


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Andrei Grigorean din Iunie 01, 2010, 18:13:55
Grija mare la hash set, pentru ca nu sunt in standard, iar atunci cand vor fi introduse se vor numi unordered set.


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Savin Tiberiu din Iunie 02, 2010, 00:58:36
Eu recomand folosirea STL-ului oricand acesta face implementarea mai usoara. E mai ok sa pierzi 10 puncte la olimpiada pentru ca nu ti-a intrat in timp hash_map-ul decat sa pierzi 100 de puncte din cauza unui bug pe care nu l-ai observat din cauza ca aveai nu stiu cate sute de linii de cod.

Totodata stl-ul e util in real-life development.


Titlul: Răspuns: Standard Template Library (STL)
Scris de: A Cosmina - vechi din Iunie 02, 2010, 17:35:20
Totusi, programele care folosesc STL au un dezavantaj cand vine vorba de debug. Eu folosesc MinGW Developer Studio si cand vreau sa fac debug nu pot sa vad nimic din ce ma intereseaza. Se poate rezolva cumva ?

Si mai am o intrebare : de ce atunci cand folosesc clasa string nu pot sa afisez un sir de caractere cu printf ("%s", sir) si trebuie sa folosesc neaparat cout ?

Cod:
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;

int main ()
{
string sir = "Working with STL";

//printf ("%s ", sir);  /* nu functioneaza */
cout << sir;   /* functioneaza */

return 0;
}


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Andrei Misarca din Iunie 02, 2010, 17:38:18
Se poate si cu printf, dar trebuie să faci ceva de genul printf("%s", sir.c_str()). Metoda c_str() convertește un string într-un char*.


Titlul: Răspuns: Standard Template Library (STL)
Scris de: SAlexandru din Iunie 02, 2010, 18:00:17
Totusi, programele care folosesc STL au un dezavantaj cand vine vorba de debug. Eu folosesc MinGW Developer Studio si cand vreau sa fac debug nu pot sa vad nimic din ce ma intereseaza. Se poate rezolva cumva ?
Din cate stiu nu ( ma rog, doar daca dai v[ i ] sau v[50] ...etc ), dar poti face un debug in visual studio sau code::blocks sau sa-ti creezi un fisier debug.txt si sa afisezi  ce te intereseaza :)


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Andrei Misarca din Iunie 03, 2010, 07:59:19
Totusi, programele care folosesc STL au un dezavantaj cand vine vorba de debug. Eu folosesc MinGW Developer Studio si cand vreau sa fac debug nu pot sa vad nimic din ce ma intereseaza. Se poate rezolva cumva ?
Din cate stiu nu ( ma rog, doar daca dai v[ i ] sau v[50] ...etc ), dar poti face un debug in visual studio sau code::blocks sau sa-ti creezi un fisier debug.txt si sa afisezi  ce te intereseaza :)
Nu cred că debug.txt e soluția, pentru că dacă intră în ciclu infinit sau ia Segmentation Fault nu va apărea nimic în debug.txt (poți să îi dai câte un fflush după fiecare afișare, dar este incomod). Cel mai bine faci fprintf(stderr, "...")


Titlul: Răspuns: Standard Template Library (STL)
Scris de: SAlexandru din Iunie 03, 2010, 11:18:50
Nu cred că debug.txt e soluția, pentru că dacă intră în ciclu infinit sau ia Segmentation Fault nu va apărea nimic în debug.txt (poți să îi dai câte un fflush după fiecare afișare, dar este incomod). Cel mai bine faci fprintf(stderr, "...")
stderr  este setat implicit ca si stdout ( console output ) deci tot acolo ajungem pana la urma :)


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Savin Tiberiu din Iunie 03, 2010, 11:39:16
Nu chiar. La stderr se face flush automat, la stdout nu. Eu de obicei faceam asa
Citat
freopen(stderr, "log.txt");
fprintf(stderr, "...");


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Petru Trimbitas din Martie 04, 2011, 14:03:10
Vreau sa adaug si eu 2 lucruri care cred ca sunt importante.  :wink:
bitset-ul nu da kbs-uri sau erori daca este acesat un element din afara lui.
Vectorii au operatori '<', '>', etc care ii compara lexicografic :D . http://www.cppreference.com/wiki/container/vector/operator_comp


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Sorin Rita din Ianuarie 10, 2012, 17:28:05
se poate sa am ceva de genu ?

Cod:
vector <int, <int,int> > x[10] ;

si daca da cum ii acesez elementele si cum folosesc, de exemplu, push_back() ?


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Marginean Ninu Ciprian din Ianuarie 10, 2012, 19:34:08
Eu cred ca tu vrei sa ai un vector cu trei valori intregi. Poti face asa:
Cod:
struct type1 {
  int a,b,c;
};
vector<type1> v;
type1 x;
x.a=2;
x.b=8;
x.c=1;
v.push_back(x);
cout << v [0].a << v [0].b << v [0].c << endl;
for (vector<type1> :: iterator it = v.begin (); it != v.end (); ++ it) {
  cout << it->a << it->b << it->c << endl;
}

Sau daca vrei sa le grupezi, dupa cum am dedus din scrierea ta:
Cod:
struct type2 {
  int a, b;
};
struct type3 {
  int a;
  type2 y;
};
vector<type3> v;
type3 x;
x.a=2;
x.y.a=8;
x.y.b=1;
v.push_back(x);
cout << v [0].a << v [0].y.b << v [0].y.c << endl;
for (vector<type3> :: iterator it = v.begin (); it != v.end (); ++ it) {
  cout << it->a << (it->y).b << (it->y).c << endl;
}

Sau cu structura pair din stl:
Cod:
vector<pair<int, pair<int, int> > > v;
pair <int, pair <int, int> > x;
x.first = 2;
x.second.first=3;
x.second.second=4;
v.push_back (x);
v.push_back(make_pair(5, make_pair(6, 7)));
cout << v [0].first << v [0].second.first << v [0].second.second << endl;
for (vector<pair<int, pair <int, int> > > :: iterator it = v.begin (); it != v.end (); ++ it) {
  cout << it->first << (it->second).first << (it->second).second << endl;
}
Sau poti sa-ti faci ceva similar structurii pair din stl:
Cod:
template<class C1, class C2> struct pereche {
  C1 first;
  C2 second;
}
vector<pereche<int, pereche<int, int> > > v;
pereche <int, pereche <int, int> > x;
x.first = 2;
x.second.first=3;
x.second.second=4;
v.push_back (x);
cout << v [0].first << v [0].second.first << v [0].second.second << endl;
for (vector<pereche<int, pereche <int, int> > > :: iterator it = v.begin (); it != v.end (); ++ it) {
  cout << it->first << (it->second).first << (it->second).second << endl;
}

Daca ti se par prea lungi tipurile poti sa pui oricand un typedef:
Cod:
typedef vector <pair <int, pair <int, int> > > :: iterator vit;
for (vit it = v.begin (); it != v.end (); ++ it) {
  cout << it->first << (it->second).first << (it->second).second << endl;
}
Sau pe rand:
Cod:
typedef pair <int, int> pii;
typedef pair<int, pii> pip;
typedef vector <pip> vp;
typedef vp::iterator vit;
vp v;
pip x;
x.first = 2;
x.second.first=3;
x.second.second=4;
v.push_back (x);
v.push_back(make_pair(5, make_pair(6, 7)));
cout << v [0].first << v [0].second.first << v [0].second.second << endl;
for (vit it = v.begin (); it != v.end (); ++ it) {
  cout << it->first << (it->second).first << (it->second).second << endl;
}



Titlul: Răspuns: Standard Template Library (STL)
Scris de: Sorin Rita din Ianuarie 10, 2012, 20:19:34
Exact un vector cu trei valori vreau. Problema e ca incercasem chestia cu structura si tot primeam Segmentation fault. Apoi am rescris sursa si n-am mai avut probleme. Si voiam sa stiu daca pot scapa de acel struct. Si da, asta voiam

Cod:
vector<pair<int, pair<int, int> > > v;

Multumesc, m-ai luminat din nou  :D


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Bodnariuc Dan Alexandru din Mai 21, 2012, 21:49:40
hmm daca ma poate ajuta cnv am o intrebare legat de <set>(multiset)
cum se face cu funnctia de comparare intre struct-uri
eu am de exemplu
Cod:
using namespace std;
bool comp (two a,two b)
{
    return (a.x<b.x);
}
multiset <two,comp> my_set;

int main()
{

   f>>n;
   for(i=1;i<=n;++i)
   {
       f>>t.x;
       t.y=i;
       my_set.insert(t);
   }

   f.close();
   g.close();
    return 0;
}
am incercat so fac ca si la functia sort din stl si ,nu merge si mai am intrebare cum se face accessul la un element anume;
mersi anticipat


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Adrian Budau din Mai 21, 2012, 22:41:37
multiset<two> my_set(comp);
comp trebuie sa fie functor( cauta pe forum si ai sa gasesti).
 ca sa accesezi un element(daca exista) *my_set.find(ceva); unde ceva e de tipul two in cazul de fata. sper sa nu zic prostii ca e cam tarziu


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Bodnariuc Dan Alexandru din Mai 22, 2012, 00:52:40
mersi am gasit :D


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Radu Grigore din Iunie 27, 2012, 19:18:33
Exact un vector cu trei valori vreau.

Mai nou exista tuple. De exemplu

Cod:
#include <cstdio>
#include <vector>
#include <tuple>
using namespace std;
int main() {
  vector<tuple<int, int, char> > v;
  v.push_back(make_tuple(1,2,'a'));
  printf("%d %d %c\n", get<0>(v[0]), get<1>(v[0]), get<2>(v[0]));
}

se compileaza cu "g++ -std=c++0x a.cpp", cel putin cu versiunea >=4.4.3.


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Bodnariuc Dan Alexandru din August 07, 2012, 01:46:48
am o intrebare legata de functia de comparare pentru set
Cod:
struct compareTwo
{
   bool cmp(const int &a,const int &b)
    { return a<b;}
}
am observat ca merge si daca scrii doar bool cmp(int a,int b) nu trebuie const si & .
e posibil sa apara erori daca nu pun const? sau &??

[editat de moderator]: foloseste tag-ul "code".


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Boaca Cosmin din August 07, 2012, 10:57:13
Nu va genera nicio eroare definirea functiei ca bool cmp(int a,int b) . Totusi, cred ca merge putin mai incet programul decat acela in care functia e definita bool cmp(const int &a ,const int &b) , insa nu stiu sa-ti explic de ce.


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Bejenariu Ionut Daniel din Decembrie 30, 2014, 19:12:29
salut imi poate explica cineva putin cum functioneaza iteratorii  :)

daca se poate un exemplu cu iteratori si unul fara iteratori la acelasi lucru (la orice)


Titlul: Răspuns: Standard Template Library (STL)
Scris de: Popescu George din Ianuarie 25, 2015, 19:19:24
Uite asa parcurgi un vector din STL cu iteratori
 
Cod:
for (std::vector<int>::iterator it = myvector.begin() ; it != myvector.end(); ++it)
    std::cout << ' ' << *it;

Adica in loc sa accesezi direct cu v ai un iterator cu care te plimbi prin memorie.
Din cate am observat sunt ceva mai lenti iteratorii.
 
Mai multe gasesti aici:
http://www.cplusplus.com/reference/vector/vector/begin/ (http://www.cplusplus.com/reference/vector/vector/begin/)


Acum stie cineva daca la ONI/OJI evaluatoarele suporta biblioteca
Cod:
<unordered_map>
?