You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Boost Subgraph获取边权重映射用于Dijkstra的编译错误问询

解决Boost Subgraph获取边权重映射的编译错误

你的编译错误根源在于**property_map模板的第二个参数使用错误**——你传入了属性值的类型int,但Boost要求这里传入的是属性标签(property tag),也就是boost::edge_weight_t。

修正后的代码

把获取权重映射的代码改成下面任意一种形式即可:

方式1:显式指定正确的模板参数

boost::property_map<UndirectedGraphS, boost::edge_weight_t>::type weightmap = get(boost::edge_weight, graph);

方式2:用auto自动推导类型(更简洁推荐)

auto weightmap = get(boost::edge_weight, graph);

错误原因解释

Boost Graph Library的property_map模板需要通过属性标签来定位对应的属性映射,而不是属性值的类型。你之前传入int作为第二个参数,编译器会误以为你要找一个类型为int的顶点/边属性,而不是edge_weight这个预定义的权重属性,这就导致了一系列模板匹配失败的编译错误。

另外,因为你使用的是subgraph,它继承了底层图的属性体系,所以只要底层图(UndirectedGraph)正确定义了EdgeWeightProperty,用上面的方式就能正确获取到全局图的边权重映射,完全可以直接用于Dijkstra算法。

内容的提问来源于stack exchange,提问作者Bugcatcher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:06:18