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
示例相同。