gpt4 book ai didi

c++ - 如何使用动态内存分配在现有数组中创建和添加新对象

转载 作者:行者123 更新时间:2023-11-28 04:26:08 25 4
gpt4 key购买 nike

我正在尝试用 C++ 做一些事情,我是新手:)

我已经尝试了 1 个获取学生详细信息并打印其输出的类(class)程序。

#include <iostream>
using namespace std;

#define MAX 10

class student
{
private:
char name[30];
int rollNo;
int total;
float perc;
public:
//member function to get student's details
void getDetails(void);
//member function to print student's details
void putDetails(void);
};

//member function definition, outside of the class
void student::getDetails(void){
cout << "Enter name: " ;
cin >> name;
cout << "Enter roll number: ";
cin >> rollNo;
cout << "Enter total marks outof 500: ";
cin >> total;
perc=(float)total/500*100;
}

//member function definition, outside of the class
void student::putDetails(void) {
cout << "Student details:\n";
cout << "Name:"<< name << ",Roll Number:" << rollNo << ",Total:" << total << ",Percentage:" << perc;
}

int main()
{
student std[MAX]; //array of objects creation
int n,loop;

cout << "Enter total number of students: ";
cin >> n;

for(loop=0;loop< n; loop++){
cout << "Enter details of student " << loop+1 << ":\n";
std[loop].getDetails();
}

cout << endl;

for(loop=0;loop< n; loop++) {
cout << "Details of student " << (loop+1) << ":\n";
std[loop].putDetails();
}

return 0;
}

它是非常基本的代码并且工作正常,我能够提供输入并打印输出。

现在我想在运行时使用动态内存分配添加新的 Student 对象,并想将该对象添加到现有的对象数组中(以便我可以获得任何学生的最高分、最低分)

I know I need to use new operator for this.

但我不确定编写此解决方案的最佳方式是什么。

我们将不胜感激任何帮助。

谢谢!

最佳答案

IMO,使用动态内存执行此操作的最佳方法是使用 std::unique_ptrstd::shared_ptr(实际上取决于要求)。

这是 unique_ptr 的一个用法示例:

using StudentPtr = std::unique_ptr<student>;

int main() {
std::vector<StudentPtr> studentDetails;
int n;

cout << "Enter the number of students: ";
cin >> n;

studentDetails.resize(n);

for (auto &s: studentDetails) {
s = StudentPtr(new student);
s->getDetails();
}

return 0;
}

要获取最小值和最大值,可以分别使用STL提供的min_elementmax_element

关于c++ - 如何使用动态内存分配在现有数组中创建和添加新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54276142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com