【发布时间】:2015-12-12 08:18:53
【问题描述】:
我有一个函数将一些模板迭代器作为输入:
template<class Iterator, class Comparator>
void Merge(Iterator first, Iterator middle, Iterator last, Comparator cmp) {
我需要在其中创建一个临时向量来存储从first 指向的位置到middle 指向的位置的值。
有没有办法做到这一点?我尝试了类似的东西
vector<Iterator> temp(first, middle);
而且我没有得到正确类型的向量。
示例代码:
#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;
}
example.cpp:6:35: error: conversion from ‘std::vector<__gnu_cxx::__normal_iterator<int*, std::vector<int> >, std::allocator<__gnu_cxx::__normal_iterator<int*, std::vector<int> > > >::iterator {aka __gnu_cxx::__normal_iterator<__gnu_cxx::__normal_iterator<int*, std::vector<int> >*, std::vector<__gnu_cxx::__normal_iterator<int*, std::vector<int> >, std::allocator<__gnu_cxx::__normal_iterator<int*, std::vector<int> > > > >}’ to non-scalar type ‘__gnu_cxx::__normal_iterator<int*, std::vector<int> >’ requested
【问题讨论】:
-
如何“不工作”?你得到构建错误(然后是什么错误)?你有运行时错误吗?意外行为?您如何使用函数,模板参数扩展为什么?请创建一个Minimal, Complete, and Verifiable Example 并向我们展示。
-
对不起,添加了一个例子