Доступ к значениям карты, содержащей векторную пару - PullRequest
0 голосов
/ 27 сентября 2018

Я объявил карту, которая содержит векторную пару, такую ​​как

typedef vector<pair<string,int>> vectorPair;
map<string,vectorPair> mapName;

Я пытался перебрать карту с помощью итератора, и я запутался, как получить доступ к паре векторов из Итератора-> первый или итератор-> второй.Есть ли лучший способ сделать это?

Ответы [ 2 ]

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

Вот аккуратный и аккуратный способ перебора карты:

for (auto x : mapName)
{
    vectorPair& vp = x.second;        // or auto&
    ...
}

Демонстрация в реальном времени на Wandbox

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

Я точно не знаю, чего вы пытаетесь достичь, но я предполагаю, что у вас есть конструкция, которая выглядит примерно так:

for(auto i = mapName.begin(); i != mapName.end(); i++)
{

}

и в этом цикле вы просто хотите получить доступ к вектору?Это будет сделано с помощью i->second.Если вам не нравится этот синтаксис, вы всегда можете использовать ссылку (что-то вроде auto &vec = i->second, а затем использовать только vec впоследствии).

Если вы хотите перебирать пары в самом векторе, вы бынужно использовать что-то вроде этого:

for(auto i = mapName.begin(); i != mapName.end(); i++)
{
    for(auto j = i->second.begin(); j != i->second.end(); j++)
    {

    }
}
...