Форум программистов, компьютерный форум CyberForum.ru

Как изменить размер динамического массива структур после того как был добавлен товар - C++

Восстановить пароль Регистрация
 
SergeyTszyu
0 / 0 / 1
Регистрация: 18.03.2013
Сообщений: 19
06.05.2014, 22:39     Как изменить размер динамического массива структур после того как был добавлен товар #1
Подскажите как мне изменить размер динамической массива структур после того как был добавлен товар , countProduct-это и есть размер массива структур.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void addProduct(int countProduct, Product *product)
{
    cout << setw(50) << "Добавлення товару" << endl;
            system("cls");
            cout << "Номер склада" << endl;
            cin.ignore(3, '\n') >> setw(2) >> product[i].numberStore;
            cout << "Код продукта" << endl;
            cin.ignore(5, '\n') >> setw(4) >> product[i].codeProduct;
            cout << "Имя продукта" << endl;
            cin.ignore(16, '\n') >> setw(15) >> product[i].nameProduct;
            cout << "Норматив запасу" << endl;
            cin.ignore(6, '\n') >> setw(5) >> product[i].standartRec;
            cout << "Количество продуктов" << endl;
            cin.ignore(6, '\n') >> setw(5) >> product[i].countProduct;
            cout << "Цена" << endl;
            cin >> setw(7) >> product[i].Price;
 
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2014, 22:39     Как изменить размер динамического массива структур после того как был добавлен товар
Посмотрите здесь:

C++ Передача динамического массива структур в функцию
C++ Размер динамического массива
Ошибка считывания из файла динамического массива структур C++
Доступ к элементам динамического массива из структур C++
C++ Задать размер динамического массива через переменную, обявленную как extern
C++ Изменить размер динамического массива
C++ Передача динамического массива структур в функцию
Функция с применением динамического массива, чтобы размер массива увеличивался по мере необходимости C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
06.05.2014, 23:03     Как изменить размер динамического массива структур после того как был добавлен товар #2
Цитата Сообщение от SergeyTszyu Посмотреть сообщение
Подскажите как мне изменить размер динамической массива структур
никак. Если ты аллоцировал память под какой то объект динамический, то расширить этот блок памяти уже нельзя, т.к. память, ну допустим, оператором new занимается непрерывным блоком, дальше - другие приложения или же твоё, аллоцирует память под другие переменные, которым могут разместиться сразу за блоком исходного твоего массива, тоесть куда ты его расширять будешь? Залезать в память другой переменной кокой - нибуть, следующей в памяти за исходной? Вот по этому твой динамический массив никак расширить нельзя, т.к. нельзя гарантировать не занятость необходимого размера памяти для непрерывного блока, который нужно прикрепить к исходному, чтоб образовать новый.
Для подобных целей нужно динамический создавать новый объект, размер которого равен размеру исходного + дополнительный размер, на который ты хочешь расшириться, далее из старого объекта копировать данные в новый и удалять старый. Вот так вот.
Чтоб не заниматься подобной ерундой и были придуманы уж более 10-и летия назад контейнеры STL, например std::vector или же std::string, которые делают всю грязную работу за тебя. Тоесть тебе не нужно беспокоиться об реалоцирование памяти объекта при его увеличение, это всё сделается за тебя. Конечно же, это относительно не быстрая операция и есть свои нюансы (можно зарезервировать сразу предполагаемый объём - reserve и тд), но в общем то на сегодняшний день, любой программист, по крайней мере, кто хоть отдалённо себя таким считает, должен знать STL.
Yandex
Объявления
06.05.2014, 23:03     Как изменить размер динамического массива структур после того как был добавлен товар
Ответ Создать тему
Опции темы

Текущее время: 06:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru