C++ 使用输出迭代器的通用函数示例无效

C++ 使用输出迭代器的通用函数示例无效,c++,iterator,copy,generic-programming,C++,Iterator,Copy,Generic Programming,我有以下模板功能: template<class In, class Out> Out copy(In begin, In end, Out dest) { while(begin != end) *dest++ = *begin++; return dest; } 模板 输出副本(输入开始、输入结束、输出目标) { while(开始!=结束) *dest++=*begin++; 返回目的地; } 当我调用以下命令时: static const

我有以下模板功能:

template<class In, class Out>
Out copy(In begin, In end, Out dest)
{
    while(begin != end)
        *dest++ = *begin++;

    return dest;
}
模板
输出副本(输入开始、输入结束、输出目标)
{
while(开始!=结束)
*dest++=*begin++;
返回目的地;
}
当我调用以下命令时:

static const double arr[] = {50,23, 56,1,78,23,25,26,143,120};
vector<double> values(arr, arr + sizeof(arr) / sizeof(arr[0]) );


// Using copy
// ----------
vector<double> values_copy;
copy(values.begin(), values.end(), back_inserter(values_copy));

for(int i=0 ; i < values_copy.size(); i++)
    cout << values_copy[i] << endl;
static const double arr[]={50,23,56,1,78,23,25,26143120};
向量值(arr,arr+sizeof(arr)/sizeof(arr[0]);
//使用副本
// ----------
向量值_拷贝;
复制(values.begin()、values.end()、back_inserter(values_copy));
对于(int i=0;i
using namespace std;
并使用std::cout、std::endl等。已经有了
std::copy
功能。

删除:

using namespace std;

并使用std::cout、std::endl等。已经有了
std::copy
函数。

或重命名您的复制函数。或者只使用标准版本!我没有包括算法头。那么副本不是该标题的一部分?@ArmenB.,是的,但是可以包含在您包含的其中一个标题中。它们是什么?@cpp:无论何时,只要包含了header,也包含了header,因为vector类使用了一些函数,并且必须包含它自己。您可以看到删除标头并尝试使用copy,例如在数组上。或者重命名您的copy函数。或者只使用标准版本!我没有包括算法头。那么副本不是该标题的一部分?@ArmenB.,是的,但是可以包含在您包含的其中一个标题中。它们是什么?@cpp:无论何时,只要包含了header,也包含了header,因为vector类使用了一些函数,并且必须包含它自己。您可以看到删除标头并尝试使用copy,例如在阵列上。