今天真的是十分郁闷,遇到这个名为error C2039: “iterator_category”: 不是“***”的成员,上网谷哥、度娘了一番,得到的结果全是说可能是用的某个名字与库中的重合了,结果试了整整的一个下午加晚上,验证了所有的名字之后,发现问题不是这样的!!!
改后代码:
//vector<Degree> deg;//用来描述从源点source到v的最短路径上权值的上界
Degree* deg = new Degree[MAXSIZE];
priority_queue<Degree, vector<Degree>, cmp> Q(deg, deg + MAXSIZE);
改前代码:
vector<Degree> deg;//用来描述从源点source到v的最短路径上权值的上界
priority_queue<Degree, vector<Degree>, cmp> Q(deg[0], deg[MAXSIZE]; 错误提示:
1>------ 已启动生成: 项目: Dijkstra, 配置: Debug Win32 ------
1> main.cpp
1>d:\program files\microsoft visual studio 10.0\vc\include\xutility(373): error C2039: “iterator_category”: 不是“Degree”的成员
1> c:\users\chenhq\desktop\dijkstra\dijkstra\degree.h(4) : 参见“Degree”的声明
1> d:\program files\microsoft visual studio 10.0\vc\include\vector(550): 参见对正在编译的类 模板 实例化“std::iterator_traits<_Iter>”的引用
1> with
1> [
1> _Iter=Degree
1> ]
1> d:\program files\microsoft visual studio 10.0\vc\include\queue(247): 参见对正在编译的函数 模板 实例化“std::vector<_Ty>::vector<_Iter>(_Iter,_Iter)”的引用
1> with
1> [
1> _Ty=Degree,
1> _Iter=Degree
1> ]
1> c:\users\chenhq\desktop\dijkstra\dijkstra\dijkstra.h(20): 参见对正在编译的函数 模板 实例化

遇到错误C2039: "iterator_category": 不是"Degree"的成员,尝试了各种解决办法如避免重名,但问题并未解决。最终发现错误在于使用优先级队列时,参数应为指针。
最低0.47元/天 解锁文章
667

被折叠的 条评论
为什么被折叠?



