【发布时间】:2019-04-11 20:28:08
【问题描述】:
我已经阅读了Merge two STL 地图问题,虽然它很接近,但我一直在寻找类似here 描述的功能。
简而言之,我想将两个 std::map 实例 (具有相同的键和值类型) 合并为一个,但需要注意的是,如果对象两个地图中都存在。
是否有现有的boost、range-v3 或std 函数可以做到这一点?如果没有,实现它的最佳方法是什么?
示例代码:
double mergePredicate(double lhs, double rhs)
{
return lhs + rhs;
}
int main()
{
std::map<int, double> mapA = { {0, 1.0}, {1, 2.0} };
std::map<int, double> mapB = { {1, 1.5}, {2, 2.5} };
// Merge maps in some way...
merge(mapA, mapB, mergePredicate);
// result: mapA == { {0, 1.0}, {1, 3.5}, {2, 2.5} }
for (const auto& p : mapA) {
std::cout << p.first << " " << p.second << std::endl;
}
}
【问题讨论】: