Witam,
próbuje stworzyć klasę, która będzie reprezentowała multigraf i wykonywała kilka innych operacji. Te operacje póki co nie są istotne.
Generalnie na razie idę od prostych rzeczy do trudnych dlatego chciałbym stworzyć graf (to mam) na podstawie wprowadzonych parametrów, a następnie go wyświetlić, czyli wyświetlić wcześniej wprowadzone "trasy" (od którego wierzchołka, do którego wraz z wagą)
#include <cstdio>
#include <vector>
using namespace std;
typedef vector< pair<int,int> > vertex;
class graph: public vector<vertex>{ public:
void add(int u, int v, int w){
(*this)[u].push_back( make_pair(v,w) );
}
};
int main() {
int *tempV = new int;
int *tempE = new int;
scanf("%d %d", tempV, tempE);
graph G;
G.reserve(*tempE);
int *u = new int;
int *v = new int;
int *w = new int;
for(int i = 0; i < *tempE; i++) {
scanf("%d %d %d", u, v, w);
G.add(*u, *v, *w);
}
delete(tempV);
delete(tempE);
delete(u);
delete(v);
delete(w);
for(vertex::iterator e = G[2].begin(); e != G[2].end(); ++e) {
printf("%d %d\n", e->first, e->second);
}
return 0;
}
Stworzyłem taki kod. Pytanie generalnie sprowadza się do ostatniej pętli. Jak pobrać klucz czyli de facto mój wierzchołek u ?
Pytanie mogę jeszcze inaczej zadać. Jak się dopchać również do indeksu samego obiektu. Jak widzicie w pętli wymuszam G[2]. Czyli wyświetlam tylko konkretne krawędzie ze sztywno wprowadzonego wierzchołka. Jak to objeść ?