c++ - 如何将 BOOST_FOREACH 与两个 std::maps 一起使用?

标签 c++ stl boost foreach maps

我的代码基本上是这样的:

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/

相关文章:

c++ - 是否有对两位值的 std::bitset 的概括?

java - 使用 JNI 在 C++ 中加载 .jar 文件

c++ - c++数据结构,可根据成员的值自动对对象进行排序

c++ - 二叉树的层序遍历

c++ - 计算幅度 <1 和幅度 >1 时的精度损失

c++ - SFINAE:当成员函数不是模板时,没有名为 ‘type’ 的类型

c++ - 为什么在 visual studio 2013/2015 上出现 vsnprintf 崩溃?

c++ - 为什么 remove_copy_if 返回一个空 vector ?

c++ - 信号和槽的用途是什么

c++ - 返回 Boost Graph 中连接的组件子图的列表