如何创建一个函数以使用标准整数阵列或唯一的指针数组而无需超载



我正在尝试创建一个创建特定大小的数组,然后将该数组扩展到一个数组的程序。它还需要在函数调用之前显示第一个数组和函数调用后的新数组。

#include <iostream>
#include <memory>
using namespace std;
unique_ptr<int[]> newCopy(int arry[], int items)
{
    unique_ptr<int[]> p(new int[items + 1]);
    p[0] = 0;
    for (int i = 0; i < items; i++)
    {
        p[i + 1] = arry[i];
}
return p;
}
void displayArry(int arry[], int items)
{
    for (int i = 0; i < items; i++)
    {
       cout << arry[i] << " ";
    }
    cout << endl;
}
int main()
{
    const int SIZE = 5;
    int myNumbers[SIZE] = {18, 27, 3, 14, 95};
    displayArry(myNumbers, SIZE);
    unique_ptr<int[]> newArry = newCopy(myNumbers, SIZE);
    //displayArry(newArry, SIZE + 1);
    for (int i = 0; i < SIZE+1; i++)
    {
       cout << newArry[i] << " ";
    }
    return 0;
}

我希望显示功能可以同时显示普通整数数组和智能指针数组,而不必超载该功能。

显示功能主要按照标准整数数组的方式工作。扩展功能有效,如果我在主函数内部使用循环,则新的唯一指针数组将显示正确的值,但是我似乎无法弄清楚如何在显示功能中使用两者。

我已经通过用不同的传递方法弄乱了它。

首先,我将数组的displayarray()参数更改为 *。

void displayArry(int arry[], int items)

更改为

void displayArry(int* arry, int items)

然后我将.get()添加到unique_ptr数组的末尾:

displayArry(newArry, SIZE + 1);

更改为:

displayArry(newArry.get(), SIZE + 1);

这使我可以通过引用该功能传递所有数据,并允许其正确显示正常数组或unique_ptr数组。

如果对此有任何想法,或者应该这样做的方法,或者可以做得更好,我会感谢反馈。

相关内容

  • 没有找到相关文章

最新更新