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

Accessing values of a map that containing a vector pair

本文关键字:映射 包含矢 访问      更新时间:2023-10-16

>我声明了一个包含向量对的映射,例如

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

我一直在尝试使用迭代器遍历地图,我对如何从迭代器>第一或迭代器>第二访问向量对感到困惑。有没有更好的方法可以做到这一点?

以下是遍历地图的一种简洁整洁的方法:

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

万德盒现场演示

我不完全知道你想实现什么,但我假设你有一个看起来像这样的结构:

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