templates - C++: How to get iterator type from defined container object -
i have code in form:
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; } etc. how can avoid defining new type edgesit used in list declaration , in smarter way, example:
list<edges::iterator_type> list; intelisense suggests edges::iterator defined typedef std::iterator pair<int,int> iterator. more say, doesn't work. tried use unordered_set::iterator, doesn't work.
edges name of object, not name of class (and namespace etc). can't nested typedef directly edges::iterator.
you can use decltype (since c++11) type want (i.e. unordered_set<pair<int,int>,customhash>). e.g.
list<decltype(edges)::iterator> list; // same list<unordered_set<pair<int,int>,customhash>::iterator> list;
Comments
Post a Comment