C++中如何使传入的数组引用引用一个函数内生成的数组并且在函数外可以使用?

这里是一个归并函数:

template<typename T>
T& merge(T& _arr, int low, int mid, int high) {
    T& temp = T[high - low + 1];
    int counter = 0, i = 0, j = mid;
    while ((i < mid) || (j < high)) {
        if (_arr[i] > _arr[j]) {
            temp[counter] = _arr[i];
            ++i;
        } else {
            temp[counter] = _arr[j];
            ++j;
        }
    }
    return temp;
}

即输入一个数组的引用然后从中间分开进行排序,我的想法是在函数内构建一个新的数组来存储排序后的结果数组,但是无论我是返回引用还是将传入的数组引用重新引用结果数组,都是无效的,请问有什么办法能让这个结果数组传递出去,谢谢各位~~~

阅读 4.3k
2 个回答

数组归并不能在原地进行。你需要把归并的结果(temp[])拷贝回原数组,然后直接返回原数组。

可以通过new operator来实现,不过我建议你最好不要那样做。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题