각각 포인터가 구조체를 가리키는 포인터의 동적 배열을 만들고 싶습니다. 프로그램에는 구조체를 추가하는 옵션이 있으며 카운터가 배열의 마지막 값에 도달하면 배열이 확장됩니다.구조체에 대한 포인터 배열에 대한 포인터를 만드는 방법은 무엇입니까?
struct student
{
string id;
string name;
};
int N=5;
int counter=0;
student **big=new student *[N]; //a ptr to an array of ptr's.
void add_student (int &counter,student **big)
{
int i;
if (counter==0)
{
for (i=0; i<N; i++)
{
big[i]=new student;
}
}
if (counter==N)
{
N+=5;
student **temp=new student *[N];
for (i=counter-1; i<N; i++)
{
temp[i]=new student;
}
for (i=0; i<counter; i++)
{
temp[i]=big[i];
}
delete [] big;
big=temp;
}
cout<<"Enter student ID: "<<endl;
cin>>(*big)[counter].id;
cout<<"Enter student name: "<<endl;
cin>>(*big)[counter].name;
counter++;
}
하나 이상의 학생을 추가하려고하면 프로그램을 실행할 때 충돌이 발생합니다. 감사!
왜 당신은 당신의 C++ 부츠로 단계, 및 STL을 사용하지 않는 (그래서 다음과 같은 몇 가지 오류가 조심해야 할 수도 있습니다)? 이것이 특정 바퀴를 다시 구현하지 않아도되므로 * containers *가있는 이유입니다. – unwind
위와 같이'student' 포인터의'std :: vector'를 사용하십시오 :'std :: vector', 그러면'pushback'을 사용하여 새로운 포인터를 추가하십시오. –
"동적 배열"을 사용하고자하는 것에 대한 C++ 질문을 계속하고 있습니다 ... 일부 학교에서는 일부 교과목 업데이트가 필요하다고 생각합니다. – crashmstr