接收迭代器并返回向量的函数

我的任务是创建一个与以下相同的函数

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 开始,在演绎指南的帮助下,您可以

template <typename It>
auto MakeVector(It range_begin, It range_end) {
    return std::vector(range_begin, range_end);
}


以上是接收迭代器并返回向量的函数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>