Boost:: Dijkstra 最短路径,如何从路径迭代器获取顶点索引
Boost:: Dijkstra Shortest Path, how to get vertice index from path iterator?
在您开始阅读之前,为了帮助您理解我的问题,我告诉我已经从以下链接复制了代码: Dijkstra 最短路径与顶点列表 = 提升图中的列表
所以。。我正在重写我的程序代码以使用 boost,但现在当 99% 准备就绪时,我被困在 GPS(用于游戏)上。我有一个节点列表,幸运的是,我以一种易于转换为 boost 方法的方式添加了它。我需要做的是创建一个这样的顶点变量:
Vertex Vx[MAX_NODES];
我从我给出的链接中复制了 typedefs。
我添加顶点的方式是这样的:
stringstream s;
s << i;
Vx[i] = add_vertex(s.str(),dgraph);
其中"i"等于整数。(例如 int i = 9)
而且 eges 也很容易添加。现在,我有了自己的结构化数组,称为"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;
}
这就是我卡住的地方,作为"source(*pathIterator,dgraph)"和"target(*pathIterator,dgraph)" 获取地址,但我需要顶点索引来访问 xNode[i],i 是 NodeID(或顶点 ID |Vx[i])。我该怎么做?
编辑:我尝试做:
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;
}
}
}
但这只是崩溃..
有了这个问题的typedef
,您可以使用get(boost::vertex_index, dgraph, v)
来获取v
的索引。 您还可以使用以下方法缓存属性映射:
IndexMap vi = get(boost::vertex_index, dgraph);
然后使用 get(vi, v)
获取 v
的索引。
相关文章:
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++中带有List类的迭代器Segfault
- 如何在c++迭代器类型中包装std::chrono
- 集合上的输出迭代器:assign和increment迭代器
- Boost Spirit,获取迭代器内部语义动作
- 对于set上的循环-获取next元素迭代器
- 为什么output_editor Concept不需要output_e迭代器标记
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 使用迭代器时如何访问对象在向量中的位置?
- std::vector::迭代器是否可以合法地作为指针
- 跟随整数索引列表的自定义类迭代器
- 不明白迭代器,引用和指针失效,一个例子
- 我可以使用反向迭代器作为ForwardIt吗
- ESP8266单片机矢量迭代器的C++问题
- 如何在C++中将迭代器作为函数参数传递
- 是否应避免从非常量迭代器转换为常量迭代器?
- 是否可以从一系列路径迭代器或子路径创建文件系统 TS basic_path
- Boost:: Dijkstra 最短路径,如何从路径迭代器获取顶点索引
- 无法将Boost路径迭代器转换为字符串