接收迭代器和 returns 向量的函数
Function that receives iterators and returns vector
我的任务是创建一个与以下相同的函数
template <typename It>
auto MakeSet(It range_begin, It range_end) {
return set(range_begin, range_end);
}
但它必须是接收迭代器(begin() 和 end())的模板和 returns 包含范围内元素的向量。
我试过了
template<typename Type, typename It>
auto MakeVector(It range_begin, It range_end) {
return vector<Type> v(range_begin, range_end);
}
但是我得到以下错误
unrecognizable template declaration/definition
您可以从迭代器中获取元素的类型,并将其指定为 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);
}
我的任务是创建一个与以下相同的函数
template <typename It>
auto MakeSet(It range_begin, It range_end) {
return set(range_begin, range_end);
}
但它必须是接收迭代器(begin() 和 end())的模板和 returns 包含范围内元素的向量。
我试过了
template<typename Type, typename It>
auto MakeVector(It range_begin, It range_end) {
return vector<Type> v(range_begin, range_end);
}
但是我得到以下错误
unrecognizable template declaration/definition
您可以从迭代器中获取元素的类型,并将其指定为 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);
}