【问题标题】:List of iterators迭代器列表
【发布时间】:2013-10-01 10:40:37
【问题描述】:

实现类图我需要这样的东西

unordered_map <Node, list<unordered_set<Edge<Node>>::iterator>> graph; 

为每个顶点存储邻接列表。但是,它说list&lt;unordered_set&lt;Edge&lt;Node&gt;&gt;::iterator&gt; 不是有效参数。
我应该如何实现这个?

这里有错误:

错误 2 错误 C2923:“std::unordered_map”:'std::list&lt;std::unordered_set&lt;Edge&lt;Node&gt;&gt;&gt;::iterator' 不是参数“_Ty”的有效模板类型参数

我正在使用带有标准编译器(兼容 c++11)的 VS2012 Express

template<class Node>
class Graph {
}

template<class Node>
    class Edge {
}

【问题讨论】:

  • 始终引用您从编译器获得的确切错误消息。
  • 无论如何,&gt;&gt; 在 C++11 中是两个右尖括号,但在 C++03 中不是。您使用的是什么编译器、版本和标志?
  • std::list&lt;unordered_set&lt;Edge&lt;Node&gt; &gt;::iterator&gt; 可能吗?
  • 我猜是你失踪了typename。 Edge 或 Node 是模板参数吗?
  • Node 和 Edge 到底是什么?

标签: c++ stl iterator


【解决方案1】:

由于Node是模板参数,所以在指定依赖的类型时需要使用typename:

unordered_map <Node, list<typename unordered_set<Edge<Node>>::iterator>> graph;
                          ^^^^^^^^

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 1970-01-01
    • 2019-07-05
    • 2018-04-26
    • 2012-01-14
    • 2013-02-07
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多