我是C ++的初学者。我有一个练习,我必须添加,删除结构上的修改数据。所以,如果我定义结构:
struct Student {
string name;
int ID;
double grade;
};
每次我想添加新学生时使用new Student student
是否正确?每次我想删除一名学生,我可以这样做吗?
delete student;
提前致谢
答案 0 :(得分:1)
如果您想使用new和delete,可以尝试:
Student* student = new Student;
delete student;
此外,还有更好的方法。您可以使用C ++容器,例如vector:
vector<Student> student;//You should add "#include <vector>"
//When you want to add a new student
Student temp;
getline(cin,temp.name);
cin>>temp.ID;
cin>>temp.grade;
student.push_back(temp);
//And When delete a student
student.pop_back();
答案 1 :(得分:-3)
为了能够在不使用标准库的情况下添加学生,删除学生或修改学生,您需要定义其他结构来管理学生。您还需要将id添加为学生的附加字段。
struct StudentList { // Declaration: StudentList sl = new StudenList;
Student *list; // linkedlist used to store any number of students
Student *next; // pointer used to traverse to the next node of list
add(Student s) // Usage: Student s = new Student("Anne",15,3); sl.add(s);
delete(int id); // Usage: std::cin >> id; ls.delete(id);
// Deletes student record with id matching the parameter.
modify(int id); // Usage: std::cin >> id; ls.modify(id);
// Modifies student record with id matching the parameter.
}
当然,在执行此功能时,您需要检查列表中的学生数量,并确保它不超出其范围(0 - 最大)。由于链接列表用于此方法,因此您需要实现代码以创建节点,删除节点以及从头节点到尾节点遍历。