【发布时间】:2017-04-11 12:48:32
【问题描述】:
我编写了下面的代码来将map 或multimap 中的键转换为set:
template<typename STLContainer>
inline auto CopyContanerKeyToSet(const STLContainer& cont)
{
std::set<decltype(cont.begin()->first)> lset;
std::transform(cont.begin(),cont.end(),std::inserter(lset,lset.end()),[](const auto it) { return it.first;});
return lset
}
现在有时我还需要将密钥转换为vector。所以我只想知道如何编写可以接受vector 或set 作为模板参数的模板函数,然后相应地创建该容器。
【问题讨论】:
-
只需添加您在调用函数时指定的另一个模板类型?
-
我不想传递像 std::vector<:string> 这样的完整类型,因为我想要函数推断 std::string 本身所以想知道如何只传递 std::向量
-
你想如何区分这些重载?
-
当用户传递 set 和 set 时没有区别,当用户传递 vector 时,应该返回 key 的向量
-
什么?你传了一个
map或者multimap,你想怎么猜是返回vector还是set?你只有一个参数。