对于大学工作,我必须实现map<string, map<string, class x> >
,其中类x是文本的容器。
我的问题是下一个:这个类x的迭代器看起来如何?我是否必须创建一个中间迭代器来访问地图中的地图,或者有什么方法可以直接访问类x?
我听说过“查找”选项,但我不知道如何在地图中使用地图。
谢谢。
答案 0 :(得分:1)
首先,如果声明新类型,处理结构,可以使代码更具可读性。
using inner_map = std::map<std::string, classx>;
using outer_map = std::map<std::string, inner_map>;
outer_map variable;
如果您想要classx
,则必须访问inner_map
中的元素。但是,要实现这一目标,您必须迭代outer_map
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
}
}
如果你想进入classx
并且不坚持显式使用迭代器,你可以像IvanV指出的那样使用基于范围的for循环。
答案 1 :(得分:0)
我猜您正在使用较新版本的C ++。
然后,你可以简单地使用auto keyword和基于范围的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) {
}
}