Динамический массив в классе

#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.