[英]C++, iterator to 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
是一個依賴名稱(因為它取決於map的類型參數T
),所以這里需要typename
。
閱讀此FAQ以獲取詳細說明:
將“ 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
typename std::map <T, Point <T> *> ::iterator i_map;
工作?
那么typename TList<T>::Type::value_type::iterator
呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.