访问地图C ++地图中最内层的地图

时间:2017-03-31 00:55:02

标签: c++ maps

using namespace std;
typedef map<string, map<string, map<string, int> > > MY_MAP3;

以上代码是我为家庭作业写作的程序的片段。我基本上想要访问最里面的地图,我需要使用迭代器。

下面的代码是我用来访问最里面的地图的代码,但是当我编译我的程序时,它会抛出一堆&#34;没有可行的转换&#34;错误。

MY_MAP3::iterator ptr = data2.find(sentence[0]);
map<string, map<string, int> >::iterator ptr2 = ptr->second;
map<string, int>::iterator ptr3 = ptr2->second;

如何在这个三重嵌套地图中访问最里面的地图?感谢。

进一步澄清,行

data2.find(sentence[0])

用于返回最外层字符串的迭代器。句子是一个向量,我正在搜索最前面的单词。

1 个答案:

答案 0 :(得分:0)

让我们从更简单的地图开始:

std::map<std::string, int>

此地图的迭代器的firststd::stringsecondint。不能比那更简单。

所有地图的工作方式完全相同。因此,当您的地图是

map<string, map<string, map<string, int> > >

这意味着此地图的迭代器将引用first的{​​{1}}和string的{​​{1}}。因为这就是你地图中的内容。

second

没有。您现在应该了解,map<string, map<string, int> >map<string, map<string, int> >::iterator ptr2 = ptr->second; 。它不是任何类型的迭代器。这只能是:

second

此时如果你想继续深入到第二级地图,你需要先map<string, map<string, int> >一些东西。

哦,在尝试对它做任何事情之前,检查你的map<string, map<string, int> > &map2 = ptr->second; 是否返回find()迭代器值也不会有什么坏处。