【发布时间】:2020-11-25 10:09:28
【问题描述】:
如何在 2 个地图上同步循环?
可能是 map1 或 map2 包含更多键。
我如何设置偏好?并增加相应的迭代器?
2 个地图的示例值:
4 7 10 11 12 13 14
3 4 7 8 10 11 12 13 14
map1 不包含“3”
What's the best way to iterate over two or more containers simultaneously
std::map<int, int> map1;
std::map<int, int> map2;
auto itA = begin(map1);
auto itB = begin(map2);
while(itA != end(map1) || itB != end(map2))
{
if(itA != end(map1))
{
++itA;
}
if(itB != end(map2))
{
++itB;
}
}
使用此代码会导致您尝试比较 2 个不相等的数字/值。
所以你必须停止递增一个或另一个迭代器,直到两个值相等。
【问题讨论】:
-
你到底想达到什么目的?
-
@AlanBirtles 一件事:就是找到那些地图中没有出现的数字。
-
那么,链接的主题没有回答您的问题?
-
两者都不存在的键或值?
-
@AlanBirtles,键“auto it = map1.find([value]);”很简单,但是确定上述循环代码的女巫迭代器递增的正确“或”语句直到见面。