Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 566
1

Выделение памяти

29.09.2017, 19:23. Показов 1309. Ответов 11
Метки нет (Все метки)

Добрый день, такой вопрос. Есть класс, в нем есть динамический массив.
C++
1
string *Array;
Такой вопрос , при создании объекта класса мне нужно выделить память для этого массива, но я не знаю количество элементов , т.к это количество будет добавляться с каждым действием пользователя. Что делать? Суть такая , пользователь производит нужные действия и в этот массив добавляет предмет. И эти действия он может производить в любое время , т.е вообще не известно сколько раз он сделает это и сколько там будет элементов.
Или такая запись
C++
1
Array = new string[];
Будет работать?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.09.2017, 19:23
Ответы с готовыми решениями:

Распределение памяти. Динамическое выделение памяти
an-1 an-2 ... a2

Выделение памяти, проверка на утечку памяти
Интересуют два вопроса: 1. Правильно ли устроен алгоритм выделения, удаление и запись ячейки...

Выделение памяти
Добрый день. Программа создает случайным образом одномерный динамический массив и далее после...

Выделение памяти
Какой суммарный объем памяти в байтах будут занимать поля CObj всех объектов класса CEx в этой...

11
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 810
29.09.2017, 19:26 2
std::string сам под себя будет выделять память.
0
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 566
29.09.2017, 19:29  [ТС] 3
Цитата Сообщение от lArtl Посмотреть сообщение
std::string сам под себя будет выделять память.
Не понял, т.е количество элементов можно не записывать в []? А просто добавлять в массив элементы?
0
шКодер самоучка
2145 / 1856 / 907
Регистрация: 09.10.2013
Сообщений: 4,055
Записей в блоге: 7
29.09.2017, 19:30 4
Лучший ответ Сообщение было отмечено axela002 как решение

Решение

Цитата Сообщение от axela002 Посмотреть сообщение
Что делать?
использовать контейнеры - std::vector, std::list либо другие
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 810
29.09.2017, 19:33 5
Ой, косяк, не дочитал. Коммент выше вырен.
0
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 566
29.09.2017, 19:35  [ТС] 6
Цитата Сообщение от Max Dark Посмотреть сообщение
использовать контейнеры
А через динамический массив , как я описал выше не получится никак?
0
281 / 235 / 114
Регистрация: 07.09.2016
Сообщений: 587
29.09.2017, 19:38 7
еще как получится. только вам все самостоятельно придется делать. представьте, что вы начали пользоваться не std::string, а обычными чарами с самостоятельным выделением памяти и прочими прелестями. но что-то у вас в коде std::string, а не самопальщина. std::string - стандартный контейнер, как и std::vector и прочие. осваивайте их.
1
шКодер самоучка
2145 / 1856 / 907
Регистрация: 09.10.2013
Сообщений: 4,055
Записей в блоге: 7
29.09.2017, 19:41 8
axela002, а контейнеры это обертки над указателями - std::vector является динамическим массивом, а std::list - двусвязным списком
1
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 566
29.09.2017, 19:44  [ТС] 9
Цитата Сообщение от DU3 Посмотреть сообщение
только вам все самостоятельно придется делать.
Что именно, можно подробнее?

Добавлено через 3 минуты
Т.е если создам такой контейнер
C++
1
std::vector<int> Items;
То я в любой момент программы могу добавить в него элемент , без выделения памяти и т.д?
0
шКодер самоучка
2145 / 1856 / 907
Регистрация: 09.10.2013
Сообщений: 4,055
Записей в блоге: 7
29.09.2017, 19:45 10
Цитата Сообщение от axela002 Посмотреть сообщение
Что именно, можно подробнее?
при каждом добавлении элемента:
* создавать новый массив, размера (старый + 1)
* скопировать в него элементы из старого
* записать новый элемент в конец нового массива
* удалить старый массив
* заменить указатель со старого массива на новый
1
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 566
29.09.2017, 19:47  [ТС] 11
Цитата Сообщение от Max Dark Посмотреть сообщение
при каждом добавлении элемента:
Понял, спасибо
0
шКодер самоучка
2145 / 1856 / 907
Регистрация: 09.10.2013
Сообщений: 4,055
Записей в блоге: 7
29.09.2017, 19:47 12
Цитата Сообщение от axela002 Посмотреть сообщение
без выделения памяти и т.д?
оно будет спрятано.
C++
1
items.push_back(new_item); // добавить новый элемент
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.09.2017, 19:47

выделение памяти
Здравствуйте, помогите пожалуйста исправить ошибку, это лишь малая часть кода. В задании: поле...

Выделение памяти
Какая разница между выделением памяти функциями malloc, calloc, realloc и оператором new? И как...

Выделение памяти(С = С++)
Привет. Нужна помощь, в выделении памяти. Есть код на С, нужно перевести его в С++. int...

Выделение памяти
Можно ли сделать так, чтобы в memory выделилась память для 5 int объектов, а затем раздать ее...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.