diff options
| author | Alexander Karatarakis <alkarata@microsoft.com> | 2018-03-14 16:48:18 -0700 |
|---|---|---|
| committer | Alexander Karatarakis <alkarata@microsoft.com> | 2018-03-24 01:27:40 -0700 |
| commit | 69dfad795f4ffb5bec60602ec1116730027ff088 (patch) | |
| tree | 238f7e393b318be442131256f451842648097356 /toolsrc/include | |
| parent | aa57df6d6ed6d17000522492b66fc93d3f32ab86 (diff) | |
| download | vcpkg-69dfad795f4ffb5bec60602ec1116730027ff088.tar.gz vcpkg-69dfad795f4ffb5bec60602ec1116730027ff088.zip | |
Introduce Maps::transform_values()
Diffstat (limited to 'toolsrc/include')
| -rw-r--r-- | toolsrc/include/vcpkg/base/util.h | 12 |
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&>()))); |
