【发布时间】:2017-03-25 05:02:28
【问题描述】:
我有一个表单中的代码:
unordered_set<pair<int,int>,CustomHash> Edges;
typedef unordered_set<pair<int,int>,CustomHash>::iterator EdgesIt;
...
for(auto it=Edges.begin();it!=Edges.end();it++){
list<EdgesIt> List;
}
等等。如何避免在 List 声明中定义新类型 EdgesIt 并以更智能的方式获取它,例如:
list<Edges::iterator_type> List;
InteliSense 仅建议 Edges::iterator 定义为 typedef std::iterator pair<int,int> iterator。多说一句,行不通。我也尝试过使用unordered_set::iterator,但它也不起作用。
【问题讨论】:
-
“它不起作用”不是一个有用的问题描述。
typedef Edges::iterator EdgesIt;是正确的。 -
@SamVarshavchik
Edges不是上述问题中类型的名称,所以typedef Edges::iterator EdgesIt;不正确。它需要是typedef decltype(Edges)::iterator EdgesIt
标签: c++ templates iterator containers typedef