列表迭代器不兼容unordered_map

时间:2015-12-17 21:53:20

标签: c++ c++11 dijkstra

我有一个相当大的项目,它实现了Dijkstra的算法来模拟网络发送数据包我遇到了一个我从未见过的问题;

我设法将问题缩小到这个范围:

//Member function of vertex
unordered_map<Vertex *, int> getEdges()
{
    return _edges; //same data type as return type
}
//Call to member function 
Vertex *t = //Arbitrary vertex
unordered_map<Vertex*, int> edges = t->getEdges();

由于某些原因,在调用此函数时,我收到错误'list iterators not compatible'。有谁知道为什么会这样?

编辑: 暂时删除

EDIT2: 事实证明,由于我做了最后一分钟的更改,我从getEdges()返回一个空的unordered_map。显然这会导致'列表迭代器不兼容'。

为了让其他人从我的错误中吸取教训,我会将代码上传到一个更长久的位置。

2 个答案:

答案 0 :(得分:0)

以下代码在NetBeans中适用于我,使用C ++ 11.请记住,我使用的值是任意的,当然我已经硬编码每个顶点以返回任意新边(我假设你' d改变.. ..

update Table1 set Column2 = case 
        when charindex('(', Column1) > 0
            then substring(Column1, 1, charindex('(', Column1) - 1)
        else Column1
        end 

答案 1 :(得分:0)

原来我从getEdges()得到一个空的unordered_map,因为我做了最后一分钟的更改。显然,这可能导致“迭代器”列表不兼容&#39;。