我有点卡住改变功能使用矢量。我有以下函数创建一个新的动态数组。现在我需要做同样但使用向量。
int *makeData(int size)
{
int *ptr = nullptr;
ptr = new int[size];
return ptr;
}
这是我迄今为止所做的全部,似乎无法弄清楚下一步该做什么。我需要一个返回的指针吗?
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);
}
}
}
答案 0 :(得分:6)
使用向量使makeData
函数变得多余。它并没有做任何简单地声明类型向量的变量并没有做得更好的事情。
可以清理其他功能,但与矢量问题无关。
此外,这些都与重载无关。
答案 1 :(得分:5)
你的makeData
向量是
vector<int> makeData(int size) {
return vector<int>(size);
}
如您所见,它实际上与
相同vector<int> data(size);
但是,如果您始终使用自动
,它会很有用auto data = makeData(size);
从getMovieData
函数开始:否,该函数未按预期工作。您正在传递一个向量作为值,并且&#34;返回&#34;其中的数据 - 除了您将数据放入本地副本中,该函数将在函数返回时被销毁。
解决方案是使用引用,如
void getMovieData(vector<int> &outData, int count);
但我建议您只返回一个新的载体
vector<int> getMovieData(int count);
答案 2 :(得分:-2)
矢量对象的容量可以保留或调整大小。 保留功能为内部存储分配额外的内存。
虽然resize函数设置了vector中最大可能元素的大小。
例子可以在这里找到: