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

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...
}

有什么方法可以串联映射以消除第二个循环中的重复代码?还是一种扩展BOOST_FOREACH一次访问两个不同 map 的方法?显然,我不想增加程序的时间复杂度(否则,我可以只创建一个新 map 并将其插入map1和map2)。我觉得我在这里缺少一些基本的东西。

最佳答案

您可以定义一个函数:

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);

尽管在这种情况下,使用std::for_each甚至可能更简单:
for_each(map1.begin(), map1.end(), doStuffWithInt);
for_each(map2.begin(), map2.end(), doStuffWithInt);

关于c++ - 如何将BOOST_FOREACH与两个std::maps一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/769867/

10-11 15:57