Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
belka32
0 / 0 / 1
Регистрация: 21.09.2014
Сообщений: 58
Завершенные тесты: 1
#1

С помощью чего можно представить динамический массив, чтобы исключить перераспределение памяти? - C++

14.11.2015, 00:42. Просмотров 241. Ответов 11
Метки нет (Все метки)

С помощью чего можно представить динамический массив? Пробовал vector, но там перераспределение памяти. Я знаю, что можно зарезервировать участок памяти, но мне в худшем случае понадобится 65000 элементов.
http://www.cyberforum.ru/cpp-beginners/thread2218884.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2015, 00:42
Я подобрал для вас темы с готовыми решениями и ответами на вопрос С помощью чего можно представить динамический массив, чтобы исключить перераспределение памяти? (C++):

Перераспределение памяти
ifstream& operator>> (ifstream& in, Toy& ob) { size_t len;...

С помощью чего можно создавать GUI на C++?
Здравствуйте! Изучаю c++ около недели, как вдруг встал в ступор перед таким...

Рекурсия (алгоритм подсчета числа способов, с помощью которых можно представить число М в виде суммы)
Нужно написать рекурсивный алгоритм подсчета числа способов, с помощью которых...

Перераспределение динамической памяти
дан двумерный массив 3х5 выделить динамически память под него, затем...

Перераспределение динамической памяти
дан двумерный массив 3х5 выделить динамически память под него, затем...

11
rikimaru2013
C++ Game Dev
2471 / 1140 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
14.11.2015, 00:45 #2
std::list кусков памяти?
1
Крюгер
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 434
Записей в блоге: 9
Завершенные тесты: 1
14.11.2015, 00:45 #3
belka32, чем тебя такой вариант не устраивает? сколько надо элементов столько и получишь
C++
1
2
3
4
5
6
int *p_darr = new int[num]; // Выделение памяти для массива
    for (int i = 0; i < num; i++) {
        // Заполнение массива и вывод значений его элементов
        p_darr[i] = i;
        cout << "Value of " << i << " element is " << p_darr[i] << endl;
    }
0
belka32
0 / 0 / 1
Регистрация: 21.09.2014
Сообщений: 58
Завершенные тесты: 1
14.11.2015, 00:55  [ТС] #4
В том-то и дело, что я не знаю сколько нужно
0
Крюгер
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 434
Записей в блоге: 9
Завершенные тесты: 1
14.11.2015, 00:58 #5
belka32, а тут и показано, что можно взять массив такой длинны, которой нужно. переменную num видишь? вот при старте её задаешь и получаешь массив нужного размера
0
belka32
0 / 0 / 1
Регистрация: 21.09.2014
Сообщений: 58
Завершенные тесты: 1
14.11.2015, 00:59  [ТС] #6
Размер может меняться в процессе работы программы. Так что здесь list должен помочь
0
Крюгер
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 434
Записей в блоге: 9
Завершенные тесты: 1
14.11.2015, 01:03 #7
пфф да что я объясняю.. вот так короче
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
int num;
 
cout<<"elements count..";
 
cin>>num;
 
int *p_darr = new int[num]; // Выделение памяти для массива
    for (int i = 0; i < num; i++) {
        // Заполнение массива и вывод значений его элементов
        p_darr[i] = i;
        cout << "Value of " << i << " element is " << p_darr[i] << endl;
    }
 
 
return 0;
}
Добавлено через 1 минуту
belka32, ну я тебе и показываю что размер будет меняться, так как надо пользователю, чего тупишь!
нахрена тебе лист? это вообще другая тема! а так чтобы массив был безразмерный в с++ не бывает. вот и всё

Добавлено через 53 секунды
belka32, то о чем ты говоришь в с++ НЕ БЫВАЕТ.
0
Croessmah
++Ͻ
14158 / 8083 / 1513
Регистрация: 27.09.2012
Сообщений: 19,921
Записей в блоге: 3
Завершенные тесты: 1
14.11.2015, 03:18 #8
Цитата Сообщение от belka32 Посмотреть сообщение
Пробовал vector, но там перераспределение памяти.
и что из этого? Резервируй тогда сразу место.
C++
1
2
std::vector < int > vec ;
vec.reserve(65000) ;
0
Renji
2127 / 1486 / 453
Регистрация: 05.06.2014
Сообщений: 4,326
14.11.2015, 06:12 #9
Цитата Сообщение от Крюгер Посмотреть сообщение
belka32, ну я тебе и показываю что размер будет меняться, так как надо пользователю, чего тупишь!
Перевожу - массив заполняется через push_back и на момент создания его размер неизвестен.
1
belka32
0 / 0 / 1
Регистрация: 21.09.2014
Сообщений: 58
Завершенные тесты: 1
14.11.2015, 21:19  [ТС] #10
Не слишком много?
0
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
14.11.2015, 21:27 #11
Цитата Сообщение от belka32 Посмотреть сообщение
Не слишком много?
Используй std::list. Это наиболее подходящий тебе вариант.

Добавлено через 43 секунды
Крюгер вообще какую-то хрень пишет. Не слушай его.
0
DrOffset
7518 / 4514 / 1097
Регистрация: 30.01.2014
Сообщений: 7,362
14.11.2015, 21:31 #12
belka32, посмотри в сторону deque. В нем добавление в конец не приводит к копированию остальных элементов. Т.е. указатели на элементы остаются корректными. Подробно изучи справку к функции push_back.
0
14.11.2015, 21:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2015, 21:31
Привет! Вот еще темы с решениями:

C помощью чего можно реализовать оффлайн карту?
Господа, подскажите, пожалуйста, с помощью чего реализовать оффлайн карту, с...

std::vector Перераспределение памяти
Код #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;tchar.h&gt;...

STL, deque Перераспределение памяти
Есть книга, в ней написано такое о деке Можно ли пример увидеть, а-то...

Перераспределение памяти для стека
Помогите решить задачку, реализовал стек, осталось решить задачку.. Задача...


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

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

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