Pobranie klucza wektora

0

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ść ?

0

Dzięki dragon

Generalnie to była pierwsza rzecz o jakiej pomyślałem, ale zastanawiałem się czy nie ma jakiegoś innego sposobu niż pętla w celu obniżenia złożoności.

Skoro nie ma to nie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1