![](/img/trans.png)
[英]Error in Dijkstra's shortest path algorithm implementation (using C++ STL)
[英]Implementing Dijkstra's shortest path algorithm using C++ and STL
您的问题似乎混淆了技术实现和算法。
首先,在技术方面,对于std :: set,您似乎需要特殊的排序以及某些元素的删除。 可以通过自定义比较器更改顺序,例如,请参见此处 。 但是,我不会仅按权重排序,因为可能会有重复项。 只需将权重放在具有更高优先级的std::pair
组件中(第一个组件)。
接下来,为了擦除元素,必须首先确定哪个元素,方法是提供指向该元素的迭代器。 此步骤完全不受您的自定义比较功能的影响。
快速总结:您应该(i)找出需要精确擦除的元素,(ii)通过std::set::find
相应的迭代器,以及(iii)擦除它们。 在我看来,似乎第一点就是这里的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.