C++ - 使用 lambda 将地图添加到地图

C++ - Add map to map with lambda

我只是想知道在 C++ 中是否有任何 性感 方法(使用标准库函数)来做类似的事情:

我有两张地图 (std::map),都是同一类型。我想将两个映射一起添加,但也决定添加哪些元素,哪些不添加一些 lambda 谓词。

有什么解决办法吗?谢谢。

您可以将 std::copy_ifstd::inserter 结合使用。如果值为偶数,此示例仅将 b 中的元素添加到 a 中:

std::copy_if(b.begin(), b.end(), std::inserter(a, a.end()),
             [](auto&& e){return e.second%2 == 0;});

如果您发现自己多次需要它,可以将其分解为辅助函数:

template <typename T, typename F>
void merge_maps (T& a, const T& b, const F& filter) { 
    std::copy_if(b.begin(), b.end(), std::inserter(a, a.end()), filter);
}

merge_maps(a, b, [](auto&& e){return e.second%2 == 0;});