我的代码基本上如下所示:
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 一次性迭代两个不同映射的方法?显然我不想增加程序的时间复杂度(否则我可以创建一个新地图并插入其中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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)