void operator()(T *src_first, T *src_last, T *dest)
{
int len = src_last - src_first;
dest += len - 1;
src_last -= 1;
while (len--)
{
*dest = *src_last;
--dest;
--src_last;
}
}
- 注意
main()
函数中调用的模板参数是int
和string
,所以重载()
函数的时候,T
应该是一个指针 - 要从后往前copy,不然就会造成
GoodCopy<int>()(a, a+m, a+m/2);
出错 src_last
一定要-1,毕竟是一个开区间