更改函数以使用向量而不是数组
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);
我在更改函数以使用向量时遇到了一些困难。我有以下创建新动态数组的函数。现在我需要做同样的事情,但使用向量。
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);