Перед тем, как начать читать, чтобы помочь вам понять мою проблему, я говорю, что я скопировал код по этой ссылке: Dijkstra Shortest Path with VertexList = ListS in boost graphBoost :: Dijkstra Самый короткий путь, как получить индекс вершины из итератора пути?
Так .. Я переписывание моего программного кода, чтобы использовать импульс, но теперь, когда 99% Я застрял с моим GPS (для игры). У меня есть список узлов, которые я добавил так, что, к счастью, легко было преобразовать в метод boost. То, что я должен был сделать было просто создать переменную Vertice так:
Vertex Vx[MAX_NODES];
я скопировал из определений типов ссылке, которую я дал.
Путь добавляю вершины заключается в следующем:
stringstream s;
s << i;
Vx[i] = add_vertex(s.str(),dgraph);
Где «я» равно целое число. (например, int i = 9)
И эры также легко добавить. Теперь у меня есть собственный структурированный массив, называемый «xNode». и, например: xNode [i] содержит всю информацию для X Y Z позиций (xNode [i] .X xNode [i] .Y и т. д.) узлов.
Теперь при использовании кода со ссылкой я это сделал:
// Write shortest path
std::cout << "Shortest path from " << startid << " to " << endid << ":" << std::endl;
float totalDistance = 0;
for(PathType::reverse_iterator pathIterator = path.rbegin(); pathIterator != path.rend(); ++pathIterator)
{
std::cout << source(*pathIterator, dgraph) << " -> " << target(*pathIterator, dgraph)
<< " = " << get(boost::edge_weight, dgraph, *pathIterator) << std::endl;
}
И это где я застрял, как «источник (* pathIterator, dgraph)» и «мишени (* pathIterator, dgraph) «Получите адреса, но мне нужны индексы вершин для доступа к xNode [i], i - это NodeID (или, вернее, идентификатор вершины | Vx [i]). Как я могу это сделать?
EDIT: я пытался сделать:
for(PathType::reverse_iterator pathIterator = path.rbegin(); pathIterator != path.rend(); ++pathIterator)
{
for(int i = 0; i < MAX_NODES; ++i)
{
if(source(*pathIterator, dgraph) == *((Vertex*)Vx[i]))
{
cout << " " << i << " " << endl;
break;
}
}
}
, но это просто падает ..
Спасибо, наконец, я получил (vi, source (* pathIterator, dgraph)), и это отлично работает! –