0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 6
|
||||||
1 | ||||||
Добавление элемента в начало динамического массива02.04.2012, 01:28. Показов 20531. Ответов 16
Метки нет Все метки)
(
Господа подскажите пожалуйста ошибку в коде. Не верно работает добавление нового элемента в начало динамического массива. Не могу допетрить как это сделать. Вот код
0
|
|
02.04.2012, 01:28 | |
Ответы с готовыми решениями:
16
Добавление чисел Фибоначчи в начало динамического массива Добавление элемента в конец динамического массива Добавление и удаление элемента динамического массива Добавление элемента в конец динамического массива! |
![]() |
||||||
02.04.2012, 02:05 | 2 | |||||
0
|
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 6
|
|
03.04.2012, 01:29 [ТС] | 3 |
а что массив обязательно должен содержать элементы. Их можно потом добавить
Добавлено через 1 минуту Ребята, а кто-нибудь может подсказать по поводу добавления элементов в начало динамического массива и что в моем коде не верно? Зарание спасибо
0
|
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 6
|
|
03.04.2012, 01:38 [ТС] | 5 |
векторые еще не учил, разбираюсь с динамическими массивами. Вы можете подсказать по моему вопросу
0
|
03.04.2012, 02:07 | 7 | ||||||||||
Если хочешь сделать самостоятельно динамический массив с добавлениями, это вполне хорошее упражнение и, конечно имеет право на существование. Всё-таки не очень честно использовать вектора, не разобравшись как выделяется/удаляется память в простых динамических массивах. Так что не слушай советчиков. Контроль памяти это одна из важнейших вещей при программировании на C
Так вот эта память у тебя течёт. У тебя в коде это однозначно вызывает утечку
например
1
|
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 6
|
|
03.04.2012, 02:19 [ТС] | 8 |
0
|
![]() |
|
03.04.2012, 02:53 | 9 |
Вообще тут задача не совсем корректна и надо говорить не о прототипе вектора а о прототипе листа(списка) или дека та как добавлять элементы надо в начало, а не в конец.
А копировать элементы из массива в массив каждый раз когда надо добавить новый элемент это как-то не очень...
0
|
03.04.2012, 03:23 | 10 |
А что поделаешь? Массивы предоставляют уникальную возможность обращаться к любому случайно выбранному элементу за одинаковое минимальное время. А также располагать все элементы друг за другом в одном куске памяти. Согласись, это весьма ценные свойства. Так что всему своё применение: в стандартной библиотеке есть vector, а есть list - и необходимость возникает бывает то в одном, то в другом. Собственно в теме мы обсуждаем самодельный аналог вектора. Чем же он, vector, бесполезен? Ты же на это намекаешь?
0
|
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 6
|
||||||
04.04.2012, 01:32 [ТС] | 12 | |||||
Ребята я допетрил как добавить элемент в начало динамического массива и у меня заработало (решение ниже). Правда это у меня получилось через грамоздко: через поэлеметную перезапись из одного массива в другой. А задача стояла чтобы это сделать через смену указателей Кто-то может подсказать как это можно сделать
Всем спасибо, кто проникся моим вопросом и не оставил без внимания
Задание конечно до конца не продумано. Но суть зад аниянаучиться работать с динамической памятью и указателями
0
|
![]() |
||||||
04.04.2012, 02:28 | 13 | |||||
3
|
1180 / 893 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
04.04.2012, 02:32 | 14 |
Размер выделится как и на старый массив. Так как инкремент постфиксный. То есть сначала выделится память под size, а потом только size увеличится на 1. Стоит исправить на ++size.
Ой не увидел последний код автора ![]() ![]()
0
|
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 6
|
|
04.04.2012, 23:20 [ТС] | 16 |
Avazart , попробовал твой вариант, но почему-то после ввода элемента cin>>temp[0]; ничего не происходит. Т.е. и не печатает новый массив и не выдает ни какой ошибки, просто курсор мигает в консоли и все.
0
|
![]() |
||||||
04.04.2012, 23:32 | 17 | |||||
0
|
04.04.2012, 23:32 | |
Помогаю со студенческими работами здесь
17
Добавление элемента в начало массива
Добавление динамического элемента в статический массив
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |