C++ 如何为映射创建迭代器<;字符串,map<;字符串,classx>>;?

C++ 如何为映射创建迭代器<;字符串,map<;字符串,classx>>;?,c++,dictionary,iterator,C++,Dictionary,Iterator,对于大学作业,我必须实现一个映射,其中class x是一个文本容器。 我的问题是下一个问题:这个类x的迭代器看起来如何?我是否必须创建一个中间迭代器来访问映射内部的映射,或者是否有任何方法可以直接访问类x? 我听说过“查找”选项,但我不知道如何将它与地图中的地图一起使用。 多谢各位 > P>我猜你正在使用新版本的C++。 然后,您可以简单地使用auto关键字和基于范围的for循环 //entry1.first is key, and entry1.second is your map<st

对于大学作业,我必须实现一个
映射
,其中class x是一个文本容器。 我的问题是下一个问题:这个类x的迭代器看起来如何?我是否必须创建一个中间迭代器来访问映射内部的映射,或者是否有任何方法可以直接访问类x? 我听说过“查找”选项,但我不知道如何将它与地图中的地图一起使用。
多谢各位

> P>我猜你正在使用新版本的C++。 然后,您可以简单地使用auto关键字和基于范围的for循环

//entry1.first is key, and entry1.second is your map<string,classx>
for (auto const& entry1: yourMap) {

    //iterating through second map here
    // entry2.second is classx
    for (auto const& entry2: entry1.second) {

    }
}
//entry1.first是键,entry1.second是您的映射
for(自动常量和入口1:yourMap){
//在这里遍历第二个映射
//entry2.2是classx
用于(自动常量和入口2:entry1.秒){
}
}

首先,如果声明新类型并处理结构,可以使代码更具可读性

using inner_map = std::map<std::string, classx>;
using outer_map = std::map<std::string, inner_map>;
outer_map variable;
如果您想进入
classx
并且不坚持显式使用迭代器,那么可以像IvanV指出的那样使用基于范围的for循环。

map::iterator
。但也许您最好将
find()
auto
一起使用。
for (outer_map::iterator outer_iterator = variable.begin(); outer_iterator != variable.end(); ++outer_iterator)
{
    for (inner_map::iterator = inner_iterator = outer_iterator->second.begin(); inner_iterator != outer_iterator->second.end(); ++inner_iterator)
    {
        // decltype(inner_iterator->second) == classx
    }
}