访问包含向量对的地图的值

时间:2018-09-26 22:07:33

标签: c++ dictionary vector std-pair

我声明了一个包含像这样的向量对的地图

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

我一直在尝试使用迭代器遍历地图,但对于如何从Iterator-> first或Iterator-> second访问向量对感到困惑。有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

这是一种遍历地图的整洁方式:

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

Wandbox上的实时演示

答案 1 :(得分:0)

我不完全知道您要实现的目标,但是我认为您拥有一个看起来像这样的构造:

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++)
    {

    }
}