c++ - -> 的基操作数没有非指针类型的指针 ’

标签 c++ pointers

我有一个映射“语言”和一个指向该映射“它”的迭代器。

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/

相关文章:

c++ - 具有从属名称(类型名)的部分特化

c++ - boost 不同的工具集

c - C中纠结的句法位

go - 从reflect.Value(foo)获取reflect.Value(&foo)

c++ - 在 C++ 中使用内存位置字符串

c++ - constexpr 用户定义文字 : Is it allowed?

c++ - constexpr lambda/‘x’ 没有命名类型;你是说 ‘x’ 吗?

c++ - 没有默认构造函数时初始化STL集合元素(不是指针)?

c - 使用指针初始化结构体的成员 (C)

c++ - 此方法是否评估空字符串?