c++ - 使用动态分配创建数组并将元素插入其中

标签 c++ arrays dynamic allocation

我想做一个图书馆管理系统作为作业

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/

相关文章:

C++ 创建一个函数来读取 .txt 文件并检查以确保文件存在,但我的循环不工作

javascript - 问答游戏,比较单选按钮的值来回答

javascript - For循环不打印所有数组

c# - 将 "dynamic"关键字与 __ComObject 一起使用时 RuntimeBinder 中的泄漏

c++ - C++20 模板ambas 的限制和使用

c# - 如何在本地修改纹理?

c++ - 管道和套接字有什么区别?

javascript - 为什么我在定义的数组上收到 "ERROR TypeError: Cannot read property ' length' of undefined"?

c++ - 为什么函数不获取动态数组? (我正在使用指针和引用)

搜索引擎的动态页面