Pagini: 1 [2] 3   În jos
  Imprimă  
Ajutor Subiect: Folosirea STL  (Citit de 13870 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« Răspunde #25 : Aprilie 06, 2008, 20:09:42 »

Pentru exemplul dat de tine poti sa faci ceva de genul asta. Sper ca am modificat tot ce trebuia.(in plus la headere trebuie sa mai incluzi <string>)
Cod:
vector <string> 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().c_str());
  }
 
  for(vector <string> :: iterator it = v.begin(); it!= v.end(); it++)
    printf("%s\n",(*it).c_str());
}
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #26 : Aprilie 06, 2008, 20:19:57 »

Multzam fain
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #27 : Aprilie 06, 2008, 22:24:58 »

Poti afla mai multe despre string si despre STL in general aici.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #28 : Mai 08, 2008, 11:06:17 »

Am o intrebare... cum se sorteaza un vector <pair <int,int> > folosind sort din algorithm crescator dupa prima componenta, iar in caz de egalitate descrescator dupa a doua componenta, de exemplu  Smile
Memorat
andrei.12
Echipa infoarena
Nu mai tace
*****

Karma: 107
Deconectat Deconectat

Mesaje: 381



Vezi Profilul
« Răspunde #29 : Mai 08, 2008, 11:31:24 »

pai faci o functie de comparare de genu:
Cod:
int cmp(pair<int, int> a, pair<int, int > b){
if (a.first != b.first)
return a.first < b.first;
return a.second < b.second;
}

si apoi sortarea o faci

Cod:
sort(v.begin(), v.end(), cmp);
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #30 : Mai 08, 2008, 12:44:07 »

pai faci o functie de comparare de genu:
Cod:
int cmp(pair<int, int> a, pair<int, int > b){
if (a.first != b.first)
return a.first < b.first;
return a.second < b.second;
}

Ca sa sortezi descrescator dupa a doua componenta trebuie sa ai:
Cod:
int cmp(pair<int, int> a, pair<int, int > b){
if (a.first != b.first)
return a.first < b.first;
return a.second > b.second;
}
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #31 : Mai 05, 2009, 19:01:37 »

Am citit in mai multe locuri despre set si map din STL, dar tot nu am inteles cu exactitate ce tip de operatii suporta cele 2 containere. Aveti un link catre un site unde zice sau poate cineva sa povesteasca concret ce operatii se pot face pe cele 2 Very Happy
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #32 : Mai 05, 2009, 20:12:35 »

Pe set ai : insert, erase, find, lower_bound, upper_bound, chestii pe care le ai si pe map, doar ca pe map poti face ceva gen Map["string"] (poti accesa elementele ca la un vector normal). Din cate stiu map-ul functioneaza ca un avl pe hashurile elementelor (eu il folosesc la normalizare).
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #33 : Mai 05, 2009, 20:39:32 »

si lower_bound intoarce iteratorul unde se afla prima aparitie a unui element?
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #34 : Mai 05, 2009, 21:08:46 »

lower_bound returneaza iterator catre pozitia primului element mai mare sau egal decat valoarea cautata, iar upper_bound returneaza iterator catre pozitia primului element mai mare strict decat valoarea cautata.
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #35 : Mai 05, 2009, 21:12:19 »

Mersi Very Happy

Si mai am o intrebare... exista vro functie care returneaza al k-lea element in ordine crescatoare dintr-un map/ set? (in complexitate logN)
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #36 : Mai 05, 2009, 21:39:53 »

Din cate stiu eu, nu exista. Trebuie sa implementezi tu AVL-ul de mana.
Memorat
blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #37 : Mai 05, 2009, 22:54:28 »

Pe set ai : insert, erase, find, lower_bound, upper_bound, chestii pe care le ai si pe map, doar ca pe map poti face ceva gen Map["string"] (poti accesa elementele ca la un vector normal). Din cate stiu map-ul functioneaza ca un avl pe hashurile elementelor (eu il folosesc la normalizare).


De unde stii tu faza cu avl pe hashuri? ;Wink

set, multiset,map, multimap sunt implementate folosind Red-Black Tree Smile
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #38 : Mai 06, 2009, 13:21:30 »

Ma rog, red black tree (nu stiu foarte bine diferenta intre cele 2). Si legat de hashuri, avand in vedere ca tu poti mapa chestii de dimensiuni diferite, imi inchipui ca ar merge pe un hash, sau ceva de genul (ca sa nu mai compari in arbore in o(lungime * logn) de fiecare data cand inserezi sau stergi), doar ca se pare ca se strica ordinea pt lower_bound si upper_bound.
Memorat
sandyxp
Strain
*

Karma: -1
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #39 : Mai 08, 2009, 15:04:49 »

Am o intrebare... cum se sorteaza un vector <pair <int,int> > folosind sort din algorithm crescator dupa prima componenta, iar in caz de egalitate descrescator dupa a doua componenta, de exemplu  Smile

Mai simplu: ai
Cod:
vector<pair<int, int> > A;
// adaugi elementele in felul urmator: daca vrei sa inserezi perechea (x, y), adaugi cu A.push_back( make_pair(x, -y) )
// apoi
sort(A.begin(), A.end());
//apoi cand accesezi elementele din vector, folosesti A[i].first si  -A[i].second pentru a obtine cele doua campuri.
Memorat
tvlad
De-al casei
***

Karma: 63
Deconectat Deconectat

Mesaje: 121



Vezi Profilul
« Răspunde #40 : Mai 10, 2009, 11:55:05 »

Pe set ai : insert, erase, find, lower_bound, upper_bound, chestii pe care le ai si pe map, doar ca pe map poti face ceva gen Map["string"] (poti accesa elementele ca la un vector normal). Din cate stiu map-ul functioneaza ca un avl pe hashurile elementelor (eu il folosesc la normalizare).
Din cate stiu eu Map<key,data> functioneaza ca un arbore rosu-negru in care sunt stocate pair<key, data>.
In niciun caz nu functioneaza pe baza de hashuri. Complexitatea accesarii unui element din map este O(log N * complexitatea comparatorului). Exista hash_map in stl, dar nu l-am folosit niciodata si nu stiu cum merge.
Toni, check this out! Tongue
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #41 : Mai 12, 2009, 21:59:11 »

Imi puteti recomanda va rog niste probleme care se rezolva cu ajutorul set/map. Smile (in afar' de sea2)
Memorat
cipri_tom
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #42 : Mai 29, 2009, 19:39:53 »

am si eu o mica intrebare la STL .... daca am o functie care vreau sa imi preia un vector<int>  ... preia singura? sau cum ar trebui sa procedez?

de ex: int F ( vector <int> p(50), vector <int> b(50) )
si mie mi se transmit catre functie doi vectori... cu pana la 50 de elemente... ii preia functia direct sau trebuie sa o fac eu manual? daca nu, cum fac treaba asta manual:D?
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #43 : Mai 29, 2009, 21:38:23 »

poti pune
Cod:
int F(vector <int> p, vector <int> b)
se descurca el sa ii preia direct Smile
Memorat
tvlad
De-al casei
***

Karma: 63
Deconectat Deconectat

Mesaje: 121



Vezi Profilul
« Răspunde #44 : Iunie 06, 2009, 11:10:01 »

poti pune
Cod:
int F(vector <int> p, vector <int> b)
se descurca el sa ii preia direct Smile
Numai sa ai grija ca daca ii transmiti asa ii copiaza si poate sa-ti iasa din memorie, plus ca dureaza ceva sa-i copieze.
Ca sa eviti asta poti sa-i trimiti prin referinta.
Cod:
int F ( vector<int> &p, vector<int> &b )
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #45 : Iunie 14, 2009, 11:19:18 »

Din cate stiu map-ul functioneaza ca un avl pe hashurile elementelor (eu il folosesc la normalizare).
Cum il folosesti? Poti modifica cheia elementelor pe parcurs?
Memorat
tvlad
De-al casei
***

Karma: 63
Deconectat Deconectat

Mesaje: 121



Vezi Profilul
« Răspunde #46 : Iunie 14, 2009, 14:10:18 »

Din cate stiu map-ul functioneaza ca un avl pe hashurile elementelor (eu il folosesc la normalizare).
Cum il folosesti? Poti modifica cheia elementelor pe parcurs?

Nu poti modifica cheile, poti muta, insa valorile (second din pair-ul ala).
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #47 : Iunie 14, 2009, 19:10:52 »

Nu poti modifica cheile, poti muta, insa valorile (second din pair-ul ala).

Si cum se face treaba asta?
Memorat
tvlad
De-al casei
***

Karma: 63
Deconectat Deconectat

Mesaje: 121



Vezi Profilul
« Răspunde #48 : Iunie 16, 2009, 08:12:58 »

Nu poti modifica cheile, poti muta, insa valorile (second din pair-ul ala).

Si cum se face treaba asta?
Daca presupunem ca avem un map<int,int> M:
Cod:
M[5] = M[3];
Poti sa il tratezi ca un vector normal, doar ca tine elementele "pe sarite".
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #49 : Iulie 19, 2009, 17:58:44 »

Ce reprezinta un priority queue declarat
Cod:
priority_queue H <int, vector<int> cmp()>
si cu ce este mai bun decat un priority queue declarat normal. Pe cpluplus.com scrie foarte vag despre chestia asta si nu m-am lamurit
Memorat
Pagini: 1 [2] 3   În sus
  Imprimă  
 
Schimbă forumul:  

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