gpt4 book ai didi

c++ - 使模板与 std::map 和 std::unordered_map 一起工作

转载 作者:可可西里 更新时间:2023-11-01 18:35:37 25 4
gpt4 key购买 nike

我有以下模板函数,它返回具有交换键和值的给定映射的拷贝:

template<typename M>
auto swapKeysAndValues(const M& m) {
std::map<typename M::mapped_type, typename M::key_type> swapped;
for (auto& p : m) {
swapped.emplace(p.second, p.first);
}
return swapped;
}

有没有办法让上述模板同时适用于 std::mapstd::unordered_map ?也就是说,对于 std::map<K, V> , 它应该返回 std::map<V, K> , 以及 std::unordered_map<K, V> , 它应该返回 std::unordered_map<V, K> .

最佳答案

template<template <typename...> class Map, typename K, typename V>
auto swapKeyValues(const Map<K, V>& map)
{
Map<V, K> result;
for (const auto& p : map) result.emplace(p.second, p.first);
return result;
}

Live example

关于c++ - 使模板与 std::map 和 std::unordered_map 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33315837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com