image.png

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