我声明了一个包含矢量对的地图
typedef vector<pair<string,int>> vectorPair;
map<string,vectorPair> mapName;
我一直试图用迭代器迭代地图,我对如何从Iterator-> first或Iterator-> second访问向量对感到困惑。有一个更好的方法吗?
这是迭代地图的一种干净整洁的方式:
for (auto x : mapName)
{
vectorPair& vp = x.second; // or auto&
...
}
在Wandbox现场演示
我不知道你想要实现什么,但我假设你有一个看起来像这样的结构:
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++)
{
}
}