2017-05-28 12 views
0

私はマップ "languages"とそのマップ "it"に対するイテレータを持っています。- >の基本オペランドに非ポインタ型のポインタがありません '

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> >

をしている使用していますか?どのような助けも高く評価されます。説明の助けがあれば非常に感謝しています。 languages.find(c)は(そしてあなたがendイテレータをされた間接参照?はその要素が存在することがわかっているUBを行う)イテレータを返すので、オーバーロードされた->オペレータを持っているが

答えて

3

は、ペアのsecondメンバーが順番にペアではなくイテレータですあなたが.を使用する必要があることを意味する:

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

多くのおかげで先生を、私はこのような巨大な細部のための注意を払っていません。なぜなら、これらのような細部についての説明が必要なときには、私たちが投票してくれる人がいるのです。 –

関連する問題