我正在尝试在 C++ 中使用一个大小发生变化的数组。由于某种原因,大小没有改变,它只包含 1 个字符串。困难的部分是用户无法输入他们要添加的课程数量,而是addCourse
调用该函数直到用户停止。不能使用向量(这是用于学校作业,需要调整大小的数组)。我不知道为什么数组似乎只包含一个字符串,我认为它可以保存相当于numCourses
字符串。每次调用函数后,我将如何调整大小以保存多个字符串?
void Student::addCourse(string* courseName)
{
int x;
numCourses += 1;//increments number of courses
string newCourse = *courseName;
string* newCourses = new string[numCourses];//temporary array
for(x=0; x<numCourses - 1; x++)//fills temp array with the values of the old
{
newCourses[x] = courses[x];
}
newCourses[numCourses - 1] = newCourse;//adds extra value
delete[] courses;//removes original array
courses = newCourses;//sets the new course list
}
编辑:对于那些询问为什么不能使用向量的人,因为分配的重点是积极避免使用堆的内存泄漏。使用这样的数组会强制有意删除存储的值。