更改函数以使用向量而不是数组

Changing a function to use vectors instead of arrays

我在更改函数以使用向量时遇到了一些困难。我有以下创建新动态数组的函数。现在我需要做同样的事情,但使用向量。

int *makeData(int size)
{
    int *ptr = nullptr;
    ptr = new int[size];
    return ptr;
}

这是我到目前为止的全部,似乎无法弄清楚下一步该做什么。我需要指向 return 的指针吗?

int *makeData(int size)
{
    vector<int> data(100);
}

这个功能好像还可以,但是有没有办法优化它(让它更简单,更干净)。

void getMovieData2(vector<int> data, int num)
{
int temp;
cout << "Enter the number of movies each student saw.\n";

for (int count = 0; count < num; count++)
{
    cout << "Student " << (count + 1) << ": ";
    cin >> temp;
    data.push_back (temp);

    while (arr[count] <= 0)
    {
        cout << "The number of movies be greater than zero.\n";
        cout << "How many movies were seen by Student " 
             << (count + 1) << "? ";
        cin >> temp;
        data.push_back (temp);
    }
}
}

使用矢量使 makeData 函数变得多余。它没有做任何简单地声明 vector 类型的变量并没有做得更好的事情。

清理其他功能是可以的,但与向量问题无关。

此外,none 这与重载有关。

你的向量 makeData

vector<int> makeData(int size) {
    return vector<int>(size);
}

如您所见,它实际上与

相同
vector<int> data(size);

但是,如果您始终使用自动,它会很有用

auto data = makeData(size);

从您的 getMovieData 功能开始:不,该功能未按预期工作。您正在传递一个向量作为值,并且其中包含 "returning" 数据 - 除了您将数据放入本地副本之外,该副本将在函数 returns.

时被销毁

解决方法是使用引用,如

void getMovieData(vector<int> &outData, int count);

不过我建议你 return 一个新的向量

vector<int> getMovieData(int count);