Я хочу создать динамический массив указателей, каждый из которых указывает на структуру. В программе есть возможность добавлять структуры, и если счетчик достигает последнего значения массива, массив расширяется.Как создать указатель на массив указателей на struct?
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? Вот почему у этого есть * контейнеры *, чтобы избавить вас от необходимости повторного внедрения этого конкретного колеса. – unwind
Как указано выше, используйте 'std :: vector' указателей' student', например: 'std :: vector', а затем просто используйте pushback для добавления новых указателей. –
Я продолжаю видеть вопросы на C++ о желании использовать «динамические массивы» ... Я предполагаю, что некоторые курсы необходимо обновить в некоторых школах. – crashmstr