#c #arrays #dynamic
#c #массивы #динамический
Вопрос:
Я некоторое время осматривался, пытаясь понять, как создать класс, а затем как также создать в нем динамический массив.
Я пытаюсь создать программу на c для банковских счетов, которая будет создавать неограниченное количество учетных записей (единственным ограничением является объем памяти), поэтому мне нужен динамический массив, где, скажем, p [1] — первая учетная запись, затем p [2] — вторая учетная запись, и чтобы она была членом класса BankAccount. Так что я могу иметь массив в ячейке памяти 1, он же номер учетной записи 1, а затем также иметь другую информацию, такую как имя, фамилия, баланс и т.д., Связанную с ним. может быть, что-то вроде, если у меня есть массив p [] в классе BankAccount, тогда я могу использовать p[1].name.
Я новичок на этом сайте, если есть лучшие способы задавать вопросы или публиковать примеры кода, пожалуйста, не стесняйтесь, скажите мне.
Это основная часть, с которой у меня возникли проблемы, с объявлением динамического массива как члена класса:
class bankAccount
{
int i;
int index;
int AccountNum;
double balance;
string last;
string first;
public:
void intro();
void deposit();
void withdraw();
void newAcc ();
void editAcc();
void chgAcc();
void print();
bankAccount::bankAccount();
}p [10]; // This is what i want to be dynamic
Спасибо.
Комментарии:
1. При всем должном уважении, вы должны отформатировать ваш код, прежде чем кто-либо сможет даже рассматривать его как вопрос. и, пожалуйста, публикуйте только ту часть, которая объясняет вашу проблему.
2. опубликованный вами код не может быть скомпилирован, пожалуйста, опубликуйте точный код, с которым у вас возникла проблема.
bankAccount::bankAccount();
инструкция в main (по крайней мере) недопустима.3. Я думаю, что я отредактировал свой ответ в соответствии с вашим форматом, спасибо за советы.
Ответ №1:
Я думаю, что структура данных, которую вы ищете, является std::vector
. std::vector
По сути, это динамический массив под капотом, но все управляется за вас.
На самом деле я бы зашел так далеко, что сказал, что вам никогда не следует использовать динамический массив в C , это то, что я бы классифицировал как концепцию C, которая была заменена. (У всех правил есть свои исключения, но я имею в виду, что если вы не знаете, почему вы выбираете динамический массив вместо a vector
, то вам следует выбрать a vector
.
Комментарии:
1. Итак, тогда как бы я добавил использовать вектор, например, куда бы я поместил его в свой код?
2. Проверьте ссылку выше и прочитайте о них, надеюсь, это прояснит. Это хлеб с маслом для программистов на C , вам следует потратить некоторое время, чтобы узнать о них, и тогда, надеюсь, станет очевидно, как их использовать.
3. Хорошо, я посмотрел и прочитал о векторах, у меня есть «Программирование на C , разработка программ, включая структуры данных, 5-е издание», но я не знаю, как я могу использовать это с моим классом BankAccount, я хочу, чтобы вектор содержал номера счетов, а затем, если я перейду к этому номеру, я смогу получить доступ к информации, связанной с этим номером счета. Могу ли я создать векторный массив, являющийся членом класса?
Ответ №2:
Похоже, что вы пытаетесь реализовать динамический массив самостоятельно, глядя на этот фрагмент кода:
bankAccount *p;
В C STL уже реализован динамический массив, который является std::vector.
Ответ №3:
Вы выделили backAccount [i], когда мне был 1. Когда вы создаете новую учетную запись, вам нужно будет освободить ее и перераспределить. Также ваша жизнь станет намного проще, если вы подадите в суд на std::vector.