访问另一个地图内的地图内的矢量

时间:2013-09-29 02:31:23

标签: c++ vector maps

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

}

非常感谢任何帮助。

1 个答案:

答案 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;
        }
    }
}