访问包含向量对的映射的值

问题描述 投票:-2回答:2

我声明了一个包含矢量对的地图

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

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

c++ dictionary vector std-pair
2个回答
1
投票

这是迭代地图的一种干净整洁的方式:

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

Wandbox现场演示


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

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.