如何解决接收迭代器并返回向量的函数
template <typename It>
auto MakeSet(It range_begin,It range_end) {
return set(range_begin,range_end);
}
但它必须是一个模板,它接收迭代器(begin() 和 end())并返回一个包含范围内元素的向量。
我试过了
template<typename Type,typename It>
auto MakeVector(It range_begin,It range_end) {
return vector<Type> v(range_begin,range_end);
}
但是我收到以下错误
无法识别的模板声明/定义
解决方法
您可以从迭代器中获取元素的类型,并将其指定为 std::vector
的模板参数。
template <typename It>
auto MakeVector(It range_begin,It range_end) {
return std::vector<typename std::iterator_traits<It>::value_type>(range_begin,range_end);
}
从 C++17 开始,在 deduction guides 的帮助下,您可以
template <typename It>
auto MakeVector(It range_begin,It range_end) {
return std::vector(range_begin,range_end);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。