infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Vidrean Mihai din Aprilie 19, 2012, 11:42:13



Titlul: Vector STL
Scris de: Vidrean Mihai din Aprilie 19, 2012, 11:42:13
Salut!!Am o problema eu vreau sa retin pentru a face un algoritmul lui Prim pt. APM intr-o structura extremitatile si costul.Pentru asta am nevoie de o structura cu 3 campuri.Deoarece nu sunt foarte sigur cat de mare sa declar vectorul din structura as vrea sa folosesc un vector din STL care aloca memorie dinamic.Problema e ca nu stiu cum fac un vector din STL cu 3 campuri.(stiu numai asa de 2 campuri vector < pair< int , int > > V ) :sad:
Ceva idei?? :D


Titlul: Răspuns: Vector STL
Scris de: Sorin Rita din Aprilie 19, 2012, 11:48:46
Poti sa faci o structura.
Cod:
struct muchie
{
   int x,y,z;
};

vector<muchie> a;


Titlul: Răspuns: Vector STL
Scris de: Simoiu Robert din Aprilie 19, 2012, 11:58:09
Daca vrei 3 campuri ori faci cum a zis Sorin, ori faci tot cu pair asa : pair < int, pair <int, int> > sau pair < pair <int, int>, int >. Pentru prima, campul first este int, iar campul second la randul lui are 2 subcampuri, adica intr-un cuvant campul second este si el pair. Pentru asta, ai asa : x = p.first, y = p.second.first (observi, p.second = pair si .first inca odata inseamna primul camp din al 2-lea camp al pairului initial), z = p.second.second (same here). Pt. al doilea caz, ai p.first pair si p.second int :).


Titlul: Răspuns: Vector STL
Scris de: Vidrean Mihai din Aprilie 19, 2012, 15:55:47
Multumesc,am reusit sa fac acea structura.
As mai avea o intrebare pot face un vector < bool > VIZ pt.vizitati.Am incercat sa dau de exemplu VIZ[n]=1 si imi da eroare....
Daca nu se poate asa cum se poate cu alocare dinamica??


Titlul: Răspuns: Vector STL
Scris de: George Marcus din Aprilie 19, 2012, 16:00:28
Cand declari vectorul poti sa zici asa vector<bool> VIZ(n, false) si atunci il initializeaza cu n valori de false. Dar nu cred ca ai nevoie sa-l aloci dinamic.


Titlul: Răspuns: Vector STL
Scris de: Sorin Rita din Aprilie 19, 2012, 16:08:14
Nu prea cred ca ai cum. Gandeste-te ca la vector cand folosesti push_back() iti si aloca memorie si apoi adauga elementul. La tine nu cred ca merge pt ca nu ai memoria alocata. Desigur ar merge daca vizitezi in ordine (adica de la 1 la n)  ce ai tu de vizitat acolo si faci viz.push_back(0) sau viz.push_back(1) dar probabil nu ai nevoie de asta.



L.E. : Sau poate merge sa folosesti insert. Nu sunt sigur, incearca. Dar mi se pare ca te complici mult prea mult.

 http://www.cplusplus.com/reference/stl/vector/insert/