Здравствуйте! У меня такой вопрос (с++): пользователю выводится меню, пока не нажат выход.
Есть класс, и пользователь может создавать объекты этого класса, все объекты будут в массиве, заранее мы не знаем какое кол-во создается, под каждый нужно динамически выделить память, под первый элемент мы выделяем в самой программе, в конструкторе или в функции???
а по поводу повторных вызовов у меня такая мысль: создаем в функции временный массив той же размерностью, копируем в него все элементы, удаляем постоянный массив, выделяем память на 1 больше, и копируем в него из временного, который тоже удаляем. Все правильно??
Всем спасибо! надеюсь понятно объяснила, что хочу=)
Другие языки программирования и технологии
помогите пожалуйста по программированию!!!
Есть две концепции решения вашего вопроса. В обоих сперва выделяется память под динамический массив объектов заранее определённого размера, например на 8 элементов, а далее идёт его заполнение объектами и одновременно проверяется остаток свободных ячеек массива. Как только все ячейки заполнены, а в массив нужно добавить очередной объект, размер массива увеличивают. В первом случае его увеличивают на заданное количество, например ещё на 8 элементов, потом ещё на 8 элементов. Во втором случае размер массива каждый раз удваивается: 8, 16, 32, 64, 128 и так далее. Это делается с помощью битового сдвига влево.
Для управления размером памяти используются функция либо метод класса, в зависимости от реализации алгоритма, которые сперва создают новый массив увеличенного массива, затем производится поэлементное копирование, потом память по указателю старого массива освобождается и наконец указателю старого массива присваивается адрес нового.
Всё, спасибо! Надеюсь, понятно объяснил, то, что вам нужно)
Для управления размером памяти используются функция либо метод класса, в зависимости от реализации алгоритма, которые сперва создают новый массив увеличенного массива, затем производится поэлементное копирование, потом память по указателю старого массива освобождается и наконец указателю старого массива присваивается адрес нового.
Всё, спасибо! Надеюсь, понятно объяснил, то, что вам нужно)
Нет. Все гораздо проще. Во первых создание обьектов класса делается в программе, причем динамический массив реализован в vector.
size ернет его размер, а push внесет еще один.
size ернет его размер, а push внесет еще один.
память под динамические объекты выделяется командой "new" и очищается командой "delete" (не забываем скобки [], если удаляется массив)
Ничем другим память под динамические объекты не выделяется.
Формально, конструктор - это то, что запустится сразу после вызова new.
Над структурой программы сами думайте. Чтобы увеличить массив, нужно увеличить массив. Без танцев с бубнами. Как это делается в обычном C - знаю, как в C++ сейчас не подскажу
Ничем другим память под динамические объекты не выделяется.
Формально, конструктор - это то, что запустится сразу после вызова new.
Над структурой программы сами думайте. Чтобы увеличить массив, нужно увеличить массив. Без танцев с бубнами. Как это делается в обычном C - знаю, как в C++ сейчас не подскажу
есть пути куда короче
Похожие вопросы
- Помогите пожалуйста с программированием БЕЙСИК
- 100 балов Помогите пожалуйста с программированием С++
- Помогите пожалуйста с программированием
- помогите пожалуйста в ПРОГРАММИРОВАНИИ
- Ассемблер! ! Помогите, пожалуйста с программированием.
- Помогите пожалуйста с программированием в паскаль
- Помогите пожалуйста разобраться с вопросами по информатике и программированию
- Помогите пожалуйста решить задачу по программированию. В чем я ошибаюсь?
- Здравствуйте! помогите пожалуйста выполнить зачётные задания по программированию на Pascal
- Помогите пожалуйста определиться с отраслью программирования и специализацией.