【发布时间】:2013-09-29 02:31:23
【问题描述】:
我有一张名为 nfa 的地图(见下文)
map<string, NFANode*> nfa;
nfa 用 NFANode 对象填充。 (见下文)
class NFANode {
public:
string label;
map<string,vector<NFANode*> >tr;
bool accepting;
bool starting;
NFANode(string s, bool a, bool x){
accepting = a;
label = s;
starting = x;
}
};
在每个对象内部都有另一个映射调用 tr 并且在 tr 内部有一个带有信息的向量。我正在尝试访问向量以打印出向量的每个元素,但无法弄清楚如何。我一直在尝试使用没有运气的迭代器。
map<string, NFANode*>::iterator nfaIt;
for (nfaIt = nfa.begin(); nfaIt != nfa.end(); ++nfaIt){
cout << "content of tr are: " << nfaIt->second->tr->second << endl;
}
任何帮助将不胜感激。
【问题讨论】:
-
nfaIt->second->tr将您带到外部映射中外部节点中NFANode的内部映射。你打算从那里做什么?倾销标签?如果曾经有一个班级为ostream插入器覆盖而尖叫,就是这样。 (和智能指针,但一步一步)。 -
tr是一个映射,它不是一个迭代器 -
@billz 可以打电话。我错过了。然而,关于流插入器的评论仍然存在。不错的收获。
-
你们把我弄丢了,这是我在 C++ 中做的第一件事,我的脑袋有点晕。我真的只是想将 tr 的内容打印到控制台,以确保我插入了正确的数据。
-
@TimHorner 这是一个“嵌套”容器,对吧?您的全局映射
nfr将字符串映射到NFANode指针的向量,每个指针都可以将字符串映射到NFANode指针的向量,每个指针......等等。假设你不填充“子”映射内的“父”指针(即您创建一个循环循环),您只希望每个映射都转储到 cout,对吗?