C++ - 使用 lambda 将地图添加到地图
C++ - Add map to map with lambda
我只是想知道在 C++ 中是否有任何 性感 方法(使用标准库函数)来做类似的事情:
我有两张地图 (std::map),都是同一类型。我想将两个映射一起添加,但也决定添加哪些元素,哪些不添加一些 lambda 谓词。
有什么解决办法吗?谢谢。
您可以将 std::copy_if
与 std::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;});
我只是想知道在 C++ 中是否有任何 性感 方法(使用标准库函数)来做类似的事情:
我有两张地图 (std::map),都是同一类型。我想将两个映射一起添加,但也决定添加哪些元素,哪些不添加一些 lambda 谓词。
有什么解决办法吗?谢谢。
您可以将 std::copy_if
与 std::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;});