c++ copy函数的实现,该怎么解决

c++ copy函数的实现
本帖最后由 u014334064 于 2015-02-01 10:16:12 编辑
为什么编译总是过不去 提示信息为有多个函数模板与参数实例匹配
我也没有加<algorithm>头文件啊 求大神指导啊


#include <iostream>
#include <vector>
#include <iterator>

using std ::cin; using std ::cout; using std ::endl; using std ::back_inserter;
using std ::vector;

template< class In , class Out >
void copy( In begin , In end , Out dest )
{
while( begin != end ) // 只要扫描区间存在
{
* dest ++ = * begin ++ ;
}
}

int main( void )
{
vector< int > v_in;
for( int i = 0 ; i != 10 ; i ++ )
{
v_in.push_back( i );
}

vector< int > v_out;
copy( v_in.begin() , v_in.end() , back_inserter( v_out ) );

return 0;
}

------解决思路----------------------
引用:
copy( v_in.begin() , v_in.end() , back_inserter( v_out ) );
=================================================
back_inserter的头文件呢?我认为你根本不用back_inserter.
vector< int > v_out(10);
copy( v_in.begin() , v_in.end() , v_out.begin()  );

你这没一句话对的。back_inserter在iterator里。不用back_inserter肯定crash。

lz的问题是因为碰到了ADL(Argument-dependent name lookup)。因为参数里有来自std的东西,所以ADL也会在namespace std里同时找copy的定义,这就ambiguous了。
------解决思路----------------------
重复定义了   指明 ::copy 或 std::copy