合并两个map <string,int> </string,int>

时间:2014-12-01 02:35:48

标签: c++ map

假设我有两张地图

std::map<string,int> mapA;

mapA["cat"] = 1;
mapA["dog"] = 3;

然后另一张地图是mapB

std::map<string,int> mapB;

mapB["cat"] = 1;
mapB["horse"] = 3;

现在我需要将mapB合并到mapA中 所以最终的mapA在合并后看起来像这样

mapA["cat"] = 2;
mapA["dog"] = 3;
mapA["horse"] = 3;

我想知道实现这一目标的最佳方法是什么? 我知道我可以遍历MapB并检查每个元素是否在MapA中,如果是,则增加值,否则将其添加到MapA。我的问题是,是否有算法或更快更有效的方法?

1 个答案:

答案 0 :(得分:4)

template <class M>
void add_maps(M const& source, M& dest)
{
    for (auto const& entry : source)
        dest[entry.first] += entry.second;
}