正确使用新的&在C ++中的Structs上删除

时间:2016-05-30 02:00:47

标签: c++ struct

我是C ++的初学者。我有一个练习,我必须添加,删除结构上的修改数据。所以,如果我定义结构:

struct Student {
        string name;
        int ID;
        double grade;
    };

每次我想添加新学生时使用new Student student是否正确?每次我想删除一名学生,我可以这样做吗?

delete student;

提前致谢

2 个答案:

答案 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 - 最大)。由于链接列表用于此方法,因此您需要实现代码以创建节点,删除节点以及从头节点到尾节点遍历。