如何使用BOOST_FOREACH和两个std :: maps?

kmo*_*ote 2 c++ foreach maps boost stl

我的代码看起来基本上是这样的:

std::map<int, int> map1, map2;
BOOST_FOREACH(int i, map1)
{
    // do steps 1-5 here...
}
BOOST_FOREACH(int i, map2)
{
    // do steps 1-5 (identical to above) here...
}
Run Code Online (Sandbox Code Playgroud)

有没有办法连接映射以消除第二个循环中的重复代码?或者一种方法来扩展BOOST_FOREACH以一次迭代两个不同的地图?显然我不想增加程序的时间复杂度(否则我可以创建一个新的map并插入map1和map2).我有一种感觉,我在这里遗漏了一些不成熟的东西.

180*_*ION 9

你可以定义一个函数:

typedef std::map<int, int> IntMap;

void doStuffWithInt(IntMap::value_type &i)
{
  // steps 1 to 5
}

BOOST_FOREACH(IntMap::value_type &i, map1)
  doStuffWithInt(i);
BOOST_FOREACH(IntMap::value_type &i, map2)
  doStuffWithInt(i);
Run Code Online (Sandbox Code Playgroud)

虽然在这种情况下使用起来可能更简单std::for_each:

for_each(map1.begin(), map1.end(), doStuffWithInt);
for_each(map2.begin(), map2.end(), doStuffWithInt);
Run Code Online (Sandbox Code Playgroud)