C ++,迭代器为std :: map

| 如何声明一个迭代器
std::map <T, Point <T> *> ,
哪里:
template <typename T>
struct TList
{
    typedef std::vector < std::map <T, Point <T> *> >  Type;
};
在下面的代码中
int main ()
{
    ....
    std::map <T, Point <T> *> ::iterator i_map;  //Error
    ...
}
g ++显示此错误:
error: dependent-name `  std::map<T,Point<T>*,std::less<_Key>,std::allocator<std::pair<const T, Point<T>*> > >::iterator\' is parsed as a non-type, but instantiation yields a type
note: say `typename  std::map<T,Point<T>*,std::less<_Key>,std::allocator<std::pair<const T, Point<T>*> > >::iterator\' if a type is meant
    
已邀请:
使用
typename
作为:
  typename std::map<T, Point <T> *>::iterator i_map;
//^^^^^^^^ here!
由于
iterator
是从属名称(因为它取决于地图的类型参数argument7ѭ),因此此处需要
typename
。 阅读此常见问题以获取详细说明: 为什么必须在何处以及为什么要放置“模板”和“类型名”关键字?     
ѭ9工作吗?     
typename TList<T>::Type::value_type::iterator
呢?     
将\“
typename
\”放在错误行:
std::map <T, Point <T> *> ::iterator i_map;
之前。 例:
typename vector<T>::iterator vIdx; 
// On your case : typename std::map <T, Point<T>*>::iterator i_map;
vIdx= find(oVector->begin(), oVector->end(), pElementToFind); //To my case
    

要回复问题请先登录注册