我有一个映射“语言”和一个指向该映射“它”的迭代器。
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;
我希望得到正确的迭代器指向 map 的正确元素,尽管我在编译具有非指针类型时遇到错误 std::pair<std::pair<std::basic_string<char>, std::basic_string<char> >, std::pair<int, int> >
如何解决这个问题?任何帮助将不胜感激,任何解释方面的帮助将不胜感激。
最佳答案
虽然 languages.find(c)
返回一个迭代器(并且您确实知道该元素存在?取消引用 end
迭代器是 UB)因此有一个重载的 ->
运算符,该对的 second
成员又是一对而不是迭代器,这意味着您需要使用 .
:
languages.find(c)->second.second.first
关于c++ - -> 的基操作数没有非指针类型的指针 ’,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44229462/