aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/include
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2018-03-14 16:48:18 -0700
committerAlexander Karatarakis <alkarata@microsoft.com>2018-03-24 01:27:40 -0700
commit69dfad795f4ffb5bec60602ec1116730027ff088 (patch)
tree238f7e393b318be442131256f451842648097356 /toolsrc/include
parentaa57df6d6ed6d17000522492b66fc93d3f32ab86 (diff)
downloadvcpkg-69dfad795f4ffb5bec60602ec1116730027ff088.tar.gz
vcpkg-69dfad795f4ffb5bec60602ec1116730027ff088.zip
Introduce Maps::transform_values()
Diffstat (limited to 'toolsrc/include')
-rw-r--r--toolsrc/include/vcpkg/base/util.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/toolsrc/include/vcpkg/base/util.h b/toolsrc/include/vcpkg/base/util.h
index c73345719..7266fbbc6 100644
--- a/toolsrc/include/vcpkg/base/util.h
+++ b/toolsrc/include/vcpkg/base/util.h
@@ -3,6 +3,7 @@
#include <algorithm>
#include <map>
#include <mutex>
+#include <unordered_map>
#include <utility>
#include <vector>
@@ -29,6 +30,17 @@ namespace vcpkg::Util
}
}
+ namespace Maps
+ {
+ template<class K, class V1, class V2, class Func>
+ void transform_values(const std::unordered_map<K, V1>& container, std::unordered_map<K, V2>& output, Func func)
+ {
+ std::for_each(container.cbegin(), container.cend(), [&](const std::pair<const K, V1>& p) {
+ output[p.first] = func(p.second);
+ });
+ }
+ }
+
template<class Cont, class Func>
using FmapOut = decltype(std::declval<Func&>()(*begin(std::declval<Cont&>())));