2017-05-28 71 views
0

我有一個映射「語言」和一個迭代器映射「它」。基本操作數 - >沒有非指針類型的指針'

map < string, pair< pair<string,string>, pair<int,int> > > languages; 
map < string, pair< pair<string,string>, pair<int,int> > >::iterator it; 

我試圖找到對INT的某一元素,假設在C是一個字符串已經存在在我的地圖的鑰匙。

使用languages.find(c)->second->second->first;我希望能得到正確的迭代器,指向地圖右側元素雖然我堅持了在編譯時錯誤已非指針類型std::pair<std::pair<std::basic_string<char>, std::basic_string<char> >, std::pair<int, int> >

如何解決這一問題?任何幫助將不勝感激,任何幫助解釋將非常感激。

回答

3

雖然languages.find(c)返回迭代器(和你知道元素存在?提領該end迭代器UB),因此有一個重載->運營商,在對的second成員又一雙,而不是一個迭代器這意味着你需要使用.

languages.find(c)->second.second.first 
+0

非常感謝先生,我沒有注意這麼大的細節。當我們需要對這些小細節進行解釋時,爲什麼有些人會爲我們投票而感到可悲。 –

相關問題