|
•APOCALYPTO
|
 |
« : Februarie 03, 2010, 21:54:21 » |
|
struct{int lev; int eul; }; vector<data> E;
E bine daca manipulez datele asa: E.lev.push_back(ceva); E.eul.push_back(altceva);
Chestia e ca eu in program pot si chiar ar fi bine daca le-as baga in acelasi timp pe "ceva" si pe "altceva". Sau altfel zis daca exista vreu mod prin care pot face cele 2 instructiuni de mai sus intr-una singura. Multumesc anticipat!
|
|
|
|
|
Memorat
|
|
|
|
|
•alexandru92
|
 |
« Răspunde #1 : Februarie 03, 2010, 22:00:43 » |
|
Ca sa scrie ce vrei tu, iti trebuie struct s { vector<int> lev; //lev este acum un vector alocat dinamic vector<int> eul; // la fel si eul }E; E.lev.push_back(ceva); E.eul.push_back(altceva);
Daca ai doar 2 campuri poti face pair< vector< int >, vector< int > > E; //pair e declarat in utility E.first.push_back(ceva); E.second.push_back(altceva);
Dar is curios ce vrei sa faci, poate exista o solutie si mai simpla 
|
|
|
|
|
Memorat
|
|
|
|
|
•toni2007
|
 |
« Răspunde #2 : Februarie 03, 2010, 22:09:24 » |
|
struct s { int lev, eul; }; vector <s> V;
V.push_back((s){10, 100});
|
|
|
|
« Ultima modificare: Februarie 03, 2010, 23:56:00 de către Pripoae Teodor Anton »
|
Memorat
|
|
|
|
|
•blasterz
|
 |
« Răspunde #3 : Februarie 03, 2010, 23:35:51 » |
|
struct s { int lev, eul; } vector <s> V;
V.push_back((s){10, 100});Mi se pare aiurea ce faci... asa ca am testat si pare sa dea eroare. In fine ideea e sa folosesti constructori: #include <cstdio> #include <vector>
using namespace std;
struct nod { int a, b; nod(){}; nod(int _a, int _b) { a = _a; b = _b; }; };
vector<nod> a;
int main() { a.push_back(nod(10, 20)); return 0; }
Constructorul nod(){}; trebuie pus, altfel nu vei mai putea declara nod x; (sau nici macar vector<nod> )
|
|
|
|
|
Memorat
|
|
|
|
|
•toni2007
|
 |
« Răspunde #4 : Februarie 03, 2010, 23:55:36 » |
|
Da, am gresit. Trebuie ';' dupa declararea struct-ului. In rest mie imi merge pe linux.
|
|
|
|
|
Memorat
|
|
|
|
|
•blasterz
|
 |
« Răspunde #5 : Februarie 04, 2010, 00:03:50 » |
|
Da, am gresit. Trebuie ';' dupa declararea struct-ului. In rest mie imi merge pe linux.
uite am scris asa #include <cstdio> #include <vector>
using namespace std;
struct nod { int a, b; };
vector<nod> a;
int main() { a.push_back((nod) (10, 20));
return 0; }
Si imi zice cand compilez cu g++ (pe linux): tr.cpp:15: error: no matching function for call to ‘nod::nod(int)’
|
|
|
|
|
Memorat
|
|
|
|
|
•toni2007
|
 |
« Răspunde #6 : Februarie 04, 2010, 00:06:28 » |
|
E '{10, 100}' nu '(10, 100)'.
|
|
|
|
|
Memorat
|
|
|
|
|
•blasterz
|
 |
« Răspunde #7 : Februarie 04, 2010, 00:07:10 » |
|
ah da... acum am vazut si eu... Asa-i la batranete ... nu mai vezi bine  )
|
|
|
|
|
Memorat
|
|
|
|
|
•APOCALYPTO
|
 |
« Răspunde #8 : Februarie 04, 2010, 19:33:56 » |
|
Dar daca as avea nevoie de o priority_queue in loc de vector? 
|
|
|
|
|
Memorat
|
|
|
|
|
•blasterz
|
 |
« Răspunde #9 : Februarie 04, 2010, 19:41:33 » |
|
#include <cstdio> #include <queue>
using namespace std;
struct nod { int a, b; nod(){}; nod(int _a, int _b) { a = _a; b = _b;}
bool operator < (const nod &x)const // pt max-heap // daca vrei min-heap inversezi semnul { if(a < x.a) return 1; return 0; }; };
int main() { priority_queue<nod> Q; Q.push(nod(2,3)); Q.push(nod(4,1)); printf("%d %d\n", Q.top().a, Q.top().b); return 0; }
sau alta metoda e sa faci ceva de genu struct cmp { bool operator()(const nod &a, const nod &b)const { if(a.a < b.a) return 1; return 0; } };
si declari priority_queue<nod, vector<nod>, cmp> Q;
|
|
|
|
|
Memorat
|
|
|
|
|
•APOCALYPTO
|
 |
« Răspunde #10 : Februarie 05, 2010, 01:09:03 » |
|
Am mai gasit o metoda la care e mai putin de scris dar e "trasa de par"  #include <iostream> #include <vector> #include <queue> using namespace std; typedef pair<int,pair<int,int> > ii; priority_queue<ii,vector<ii>, greater<ii> > V; int main() { V.push(ii(1, pair<int,int> ( 2,3) )); cout<<V.top().first<<V.top().second.first<<V.top().second.second;
return 0; }
|
|
|
|
|
Memorat
|
|
|
|
|
•blasterz
|
 |
« Răspunde #11 : Februarie 05, 2010, 10:44:21 » |
|
Eu zic ca e mai ok cum am zis eu cu operator < (sau ()). Adica e mai elegant de scris codul si in plus ai mai multa libertate: poti sa definesti compararea intre 2 elemente cum vrei tu.
|
|
|
|
|
Memorat
|
|
|
|
|