我想做一个图书馆管理系统作为作业
class student
{
char ID_number[30];
char Student_name[30];
public:
void create_student()
{
cout<<"\nEnter The ID Number ";
cin>>ID_number;
cout<<"\n\nEnter The Name of The Student: ";
cin>>Student_name;
cout<<"\n\nStudent Created Successfully"<<endl;
}
void show_student()
{
cout<<"\nID Number: "<<ID_number;
cout<<"\nStudent Name: ";
cin.getline(Student_name,30);
}
我将如何使用动态分配使每个新条目进入数组并使用指针显示某个学生?
我在这方面真的很糟糕,在此先感谢!
最佳答案
由于您是在 C++ 中编码,而不是在 C 中,我建议使用字符串 class,如 std::string
,而不是原始的 char
数组,例如:
std::string student_name;
如果你想在内存中存储学生列表,我建议使用 std::vector
容器,例如:
std::vector<Student> students;
您可以使用vector::push_back
方法将新学生添加到容器中。
编辑 如果您想使用new[]
和delete[]
作为学习练习,您可以分配大量学生,然后在数组内部使用一个整数索引,指向第一个用于插入新学生的空闲槽。
例如:
int capacity = 100;
Student* students = new Student[capacity];
int student_count = 0;
要添加一个新学生,请将其复制到 student_count
给出的数组索引中,然后将此变量递增 1,指向预分配数组中的下一个空闲位置。
一定要注意不要溢出数组的容量。一旦预分配的数组已满,如果你想添加一个新学生,你需要分配一个更大容量的新数组。您可以使用 2 倍或 1.5 倍比例因子来计算新容量。
不要忘记释放之前使用 delete[]
分配的内存。
如果你这样做,你基本上就是从头开始实现 std::vector
(即使这个标准容器有额外的高级特性,比如移动语义等)。
关于c++ - 使用动态分配创建数组并将元素插入其中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43932931/