我有一张名为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;
}
非常感谢任何帮助。
答案 0 :(得分:0)
// iterate the outer map
map<string, NFANode*>::iterator nfaIt;
for (nfaIt = nfa.begin(); nfaIt != nfa.end(); ++nfaIt)
{
// iterate each inner map
map<string,vector<NFANode*> >::iterator trIt;
for (trIt = nfaIt->second->tr.begin(); trIt != nfaIt->second->tr.end(); ++trIt)
{
// iterate each vector in the inner map
vector<NFANode*>::iterator vecIt;
for (vecIt = trIt->second.begin(); vecIt != trIt->second.end(); ++vecIt)
{
NFANode* pNodeInVecInMapInMap = *vecIt;
}
}
}