Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 函数,该函数接收迭代器并返回向量_C++_Iterator_Stdvector - Fatal编程技术网

C++ 函数,该函数接收迭代器并返回向量

C++ 函数,该函数接收迭代器并返回向量,c++,iterator,stdvector,C++,Iterator,Stdvector,我的任务是创建一个与下面相同的函数 template <typename It> auto MakeSet(It range_begin, It range_end) { return set(range_begin, range_end); } 模板 自动生成集(It范围\u开始,It范围\u结束){ 返回集(范围开始,范围结束); } 但它必须是一个模板,它接收迭代器(begin()和end())并返回一个向量,其中包含范围中的元素 我试过了 template<

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

template <typename It>
auto MakeSet(It range_begin, It range_end) {
     return set(range_begin, range_end);
}
模板
自动生成集(It范围\u开始,It范围\u结束){
返回集(范围开始,范围结束);
}
但它必须是一个模板,它接收迭代器(begin()和end())并返回一个向量,其中包含范围中的元素

我试过了

template<typename Type, typename It>
auto MakeVector(It range_begin, It range_end) {
    return vector<Type> v(range_begin, range_end);
}
模板
自动生成向量(It范围\u开始,It范围\u结束){
返回向量v(范围开始,范围结束);
}
但是,我得到以下错误

无法识别的模板声明/定义


您可以从迭代器获取元素的类型,并将其指定为
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);
}
模板
自动生成向量(It范围\u开始,It范围\u结束){
返回标准::向量(范围开始,范围结束);
}
自C++17以来,在您的帮助下

template <typename It>
auto MakeVector(It range_begin, It range_end) {
    return std::vector(range_begin, range_end);
}
模板
自动生成向量(It范围\u开始,It范围\u结束){
返回标准::向量(范围开始,范围结束);
}

您可以从迭代器获取元素的类型,并将其指定为
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);
}
模板
自动生成向量(It范围\u开始,It范围\u结束){
返回标准::向量(范围开始,范围结束);
}
自C++17以来,在您的帮助下

template <typename It>
auto MakeVector(It range_begin, It range_end) {
    return std::vector(range_begin, range_end);
}
模板
自动生成向量(It范围\u开始,It范围\u结束){
返回标准::向量(范围开始,范围结束);
}

难道你不能简单地用
向量
替换
集合
?您正在使用C++17吗?不要在return语句中命名变量
v
,与
set
示例相同。您不能简单地用
vector
替换
set
?您正在使用C++17吗?不要在return语句中命名变量
v
,与
set
示例相同。