Доступ к вложенным картам - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь использовать карту с 4 вложенными картами. проблема в том, что мне нужно найти ключ в каждой карте и получить значение последней вложенной карты.

карта:

typedef map<int , map<int , map<int , map<int , map <int, string> >  > > > g_tAllGroupMsgTextMap ;

выше карта. как получить доступ к последней вложенной карте (map<int, string>)

string getText(int GroupId,int NetworkIdIndex,int LangCodeIndex,int MapVersion,int TagCode)
{

   typedef map<int , map<int , map<int , map<int , map <int, string> >  > > > g_tAllGroupMsgTextMap ;
   g_tAllGroupMsgTextMap g_AllGroupMsgTextMap;
   string l_sMsgTextResponseString;
   typedef map<int , map<int , map<int , map <int, string> >  > > g_tFirstInnerMap;
   typedef  map<int , map<int , map <int, string> >  >  g_tSecondInnerMap;
   typedef  map<int , map <int, string> >    g_tThirdInnerMap;
   typedef  map <int, string>  g_tFourthInnerMap;

   g_tFirstInnerMap g_FirstMap;
   g_tSecondInnerMap g_SecondMap;
   g_tThirdInnerMap g_ThirdMap;
   g_tFourthInnerMap g_FourthMap;

   g_tAllGroupMsgTextMap :: iterator MsgTextMapItr;
   g_tFirstInnerMap :: iterator FirstInnerMapItr;
   g_tSecondInnerMap :: iterator SecondInnerMapItr;
   g_tThirdInnerMap :: iterator ThirdInnerMapItr;
   g_tFourthInnerMap :: iterator FourthInnerMapItr;

   MsgTextMapItr =  g_AllGroupMsgTextMap.find(GroupId);
   if(MsgTextMapItr != g_AllGroupMsgTextMap.end())
   {
      FirstInnerMapItr= MsgTextMapItr->second.find(NetworkIdIndex);
      if( FirstInnerMapItr != MsgTextMapItr->second.end())
      {
         SecondInnerMapItr = FirstInnerMapItr->second.find(LangCodeIndex); 
         if( SecondInnerMapItr != FirstInnerMapItr->second.end())
         {
            ThirdInnerMapItr=SecondInnerMapItr->second.find(MapVersion);
            if(ThirdInnerMapItr != SecondInnerMapItr->second.end())
            {
               FourthInnerMapItr = ThirdInnerMapItr->second.find(TagCode);
               if(FourthInnerMapItr != ThirdInnerMapItr->second.end())
               {
                  cout<<"MsgText ->"<<FourthInnerMapItr->second<<endl;
                  //return FourthInnerMapItr->second;
               }
               else
               {
                  cout<<"not found";

               }
            }
         }
      }
   }
}

Я не получаю ни FourthInnerMapItr->second, ни not found что-нибудь нужно изменить ??

1 Ответ

0 голосов
/ 07 сентября 2018

g_tAllGroupMsgTextMap[key] затем вы получите первую карту. Затем снова сделайте то же самое, чтобы получить вторую вложенную карту и продолжить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...