Hvordan bruger jeg en iterator?
Jeg har en graf klasse der indeholder følgende metode der returnerer en iterator over de knuder der er incidente til en knude:VertexList::iterator VisibilityGraph::adjacentVertices(PolarVertex* v) {
EdgeList* edg = v->edges;
VertexList* ver = new VertexList();
EdgeList::iterator eiter = (*edg).begin();
for(eiter = (*edg).begin(); eiter != (*edg).end(); ++eiter) {
if((*eiter)->origin == v) {
ver->push_back((*eiter)->destination);
}
else{
ver->push_back((*eiter)->origin);
}
}
VertexList::iterator viter = (*ver).begin();
return viter;
}
Når jeg så vil bruge min metode gør jeg følgende i min test klasse:
VertexList::iterator iter = vg->adjacentVertices(v);
for(iter = vg->adjacentVertices(v); iter != ^^^vg->adjacentVertices(v)^^^; ++iter) {
(*iter)->printC();
}
Ovenstående kan kompilere men er ikke korrekt, fordi der står noget forkert mellem ^^^ ^^^, og det giver segmentation fault
Spørgsmålet er nu, hvordan jeg retter det til så jeg kan skrive etEllerAndet.end() i stedet for....