1

我有一张名为 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;

}

任何帮助将不胜感激。

4

1 回答 1

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;
        }
    }
}
于 2013-09-29T03:09:41.953 回答