Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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++;从模板迭代器创建向量_C++_Templates_Iterator - Fatal编程技术网

C++ C++;从模板迭代器创建向量

C++ C++;从模板迭代器创建向量,c++,templates,iterator,C++,Templates,Iterator,我有一个函数,它将一些模板迭代器作为输入: template<class Iterator, class Comparator> void Merge(Iterator first, Iterator middle, Iterator last, Comparator cmp) { 我没有得到正确类型的向量 示例代码: #include <vector> template<class Iterator> void Merge(Iterator first,

我有一个函数,它将一些模板迭代器作为输入:

template<class Iterator, class Comparator>
void Merge(Iterator first, Iterator middle, Iterator last, Comparator cmp) {
我没有得到正确类型的向量

示例代码:

#include <vector>

template<class Iterator>
void Merge(Iterator first, Iterator middle) {
    std::vector<Iterator> temp(first, middle);
    Iterator left_it = temp.begin();
}

int main() {
    std::vector<int> myVec = {1, 2, 3, 4};
    Merge(myVec.begin(), myVec.end());
    return 0;
}
#包括
模板
无效合并(迭代器优先,迭代器中间){
标准:向量温度(第一,中间);
迭代器left_it=temp.begin();
}
int main(){
向量myVec={1,2,3,4};
合并(myVec.begin(),myVec.end());
返回0;
}

example.cpp:6:35:错误:从请求的'std::vector::iterator{aka{uuu_gnu_cxx::u normal_iterator}'转换为非标量类型'u_gnu cxx::u normal_iterator'

您需要创建迭代器的值类型的向量,而不是迭代器的向量。您可以使用
标题获取值类型

typedef typename std::iterator_traits<Iterator>::value_type value_type;
std::vector<value_type> temp(first, middle);
typedef typename std::iterator\u traits::value\u type value\u type;
标准:向量温度(第一,中间);

它是如何“不工作”的?您是否有生成错误(然后是什么错误)?你有运行时错误吗?意外行为?如何使用函数,模板参数扩展到什么?请创建并向我们展示。抱歉,添加了一个示例
typedef typename std::iterator_traits<Iterator>::value_type value_type;
std::vector<value_type> temp(first, middle);