【发布时间】:2022-01-13 18:45:12
【问题描述】:
我为一个有课程和成绩的学生开设了一个班级,该程序一直在要求一个新学生,直到给出的名字停止。为了存储这些实例,我想使用一个向量,但是除了首先为实例创建一个数组然后将它们推回向量中之外,我没有找到任何其他方法来存储它们。 是否可以为一个实例留出空间并在使用后删除Student student 中存储的值以便重复使用?
int i=0;
Student student[20];
vector<Student> students;
cout << "Name?" << endl;
getline(cin,student[i].name);
while((student[i].name) != "stop")
{
student[i].addcoursegrade();
students.push_back(student[i]);
i++;
cout << "Name?" << endl;
getline(cin,student[i].name);
if((student[i].name) == "stop")
break;
};
我还在类中使用向量来存储课程和成绩的值,因为它们也应该在增长。该类的代码在这里:
class Student {
public:
string name;
void print() {
cout << name ;
for (int i = 0; i < course.size(); i++)
cout << " - " << course[i] << " - " << grade[i];
cout<<endl;
}
void addcoursegrade() {
string coursee;
string gradee;
cout << "Course?" << endl;
getline(cin, coursee);
course.push_back(coursee);
while (coursee != "stop") {
cout << "Grade?" << endl;
getline(cin, gradee);
grade.push_back(gradee);
cout << "Course?" << endl;
getline(cin, coursee);
if (coursee != "stop")
course.push_back(coursee);
else if(coursee == "stop")
break;
}
};
private:
vector<string> course;
vector<string> grade;
};
【问题讨论】:
-
只需使用单个
Student实例而不是数组。为了清洁,将其范围限定在循环内。.push_back复制对象,因此您不需要单独的实例开始。 -
"但是我没有找到任何其他方法来存储它们,而不是" 您究竟是如何尝试“找到”方法来做到这一点的?例如,您是否尝试使用搜索引擎来look for examples of using .push_back?
-
请注意,在这里使用数组几乎会破坏使用
vector的意义。只要输入第 21 个Student,Ka-Blooey! -
See this。将
Student放入向量中没有问题。因此,获取该代码,添加到其中,然后复制您声称看到的问题。或者只是接受链接上的代码,然后从那里开始工作。
标签: c++ loops class vector instance