С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
xod
156 / 46 / 17
Регистрация: 01.07.2014
Сообщений: 185
#1

Есть ли в С++ динамические массивы? - C++

12.07.2014, 21:08. Просмотров 1699. Ответов 54
Метки нет (Все метки)

Я сначала подобный вопрос задал поисковой
системе. Ответ меня обескуражил. Ответы
примерно такие:
1. Нет и не было.
2. Кажется есть оператор New
3. Есть динамическая память
4. Что-то есть, а вам зачем?
Мне все-таки хочется узнать, а лучше
Небольшой конкретный пример, что есть??
И как это использовать?? Что надо подключить??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2014, 21:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Есть ли в С++ динамические массивы? (C++):

Зачем нужны обычные массивы, если есть динамические? - C++
Всем привет! Вопрос в заголовке. Если динамический массив даёт те же и ещё больше функций и, при том, лучше обращается с памятью, зачем...

Динамические массивы и функции. Динамические массивы. - C++
Дана матрица 6х8 целого типа. Создать одномерный массив, содержащий элементы матрицы, кратные числу, введенному с клавиатуры.

Указатели и массивы. Индексация с помощью указателей. Передача массивов в функции. Динамические массивы (обработка матриц) - C++
Для каждого элемента , bij, i= 1,...,n , j=1,...,n определяется свой многоугольник местонахождением соответствующего элемента aij (см....

Динамические массивы. - C++
Дан одномерный массив, состоящий из 30 целых чисел. Создать другой массив, содержащий элементы исходного массива, кратные 5. Помогите...

Динамические массивы - C++
Объясните пожалуйста что такое динамические массивы. Это массивы с не константным количеством элементов? Если так, то как их объявлять?

Динамические массивы - C++
Если у меня есть 2 двумерных динамических массива один х1 размерностью m*n, а другой х2 размерностью m*(n+1), то что происходит с ними...

54
ValeryS
Модератор
6729 / 5138 / 485
Регистрация: 14.02.2011
Сообщений: 17,254
12.07.2014, 21:46 #16
Цитата Сообщение от gru74ik Посмотреть сообщение
что так определён динамический массив в учебной литературе
в печку
динамический массив подразумевает изменение размера во время работы
Цитата Сообщение от gru74ik Посмотреть сообщение
и в википедии, например.
сам то читал?
Строго говоря вышеописанная реализация массива не является динамической, так как нет изменения размера массива во время работы, а всего лишь массив переменной длины.
и далее алгоритм реализации
0
Avazart
Эксперт С++
7262 / 5434 / 304
Регистрация: 10.12.2010
Сообщений: 24,158
Записей в блоге: 17
12.07.2014, 21:48 #17
Цитата Сообщение от ValeryS Посмотреть сообщение
в печку
динамический массив подразумевает изменение размера во время работы
Это как ?
Нельзя изменить размер память которая уже выделена, можно только перераспределить память путем копирования в новый массив большего размера ( если не брать в расчет reloc)
Цитата Сообщение от Renji Посмотреть сообщение
который на столько "динамичен", что даже размер поменять нельзя.
Так вектор не что иное как обвертка над "этим массивом", не по этому не советую браться за вектор не разобравшись с обычными дин.массивами
0
Renji
2017 / 1385 / 312
Регистрация: 05.06.2014
Сообщений: 3,953
12.07.2014, 21:51 #18
Renji, думаю человеку который недавно начал учить С++ нужно с самым простым разобраться для начала..
Что тут самое простое - большой вопрос. Человек ведь или delete забудет, или по указателю на удаленный объект полезет. Особенно если пришел из языков с автоматической сборкой мусора, где ручного удаления данных либо вообще нет, либо сводится оно к обнулению указателя.
0
dimabubyakin
159 / 120 / 44
Регистрация: 16.10.2013
Сообщений: 1,738
Завершенные тесты: 5
12.07.2014, 21:53 #19
Renji, ты сам ответил на свой вопрос)
0
ValeryS
Модератор
6729 / 5138 / 485
Регистрация: 14.02.2011
Сообщений: 17,254
12.07.2014, 21:54 #20
Цитата Сообщение от dimabubyakin Посмотреть сообщение
хм.. пример приведенный мной является простейшим динамическим массивом,
не является
способ выделения памяти не делает массив динамическим
Цитата Сообщение от dimabubyakin Посмотреть сообщение
Человек просто попросил привести пример
человек спросил прямо
Цитата Сообщение от xod Посмотреть сообщение
Есть ли в С++ динамические массивы?
и в первых постах ему ответили

круче vector я видел динамический массив CArray в MFC но он нестандартый
C++
1
2
3
4
CArray <int,int>arr;
arr[10]=5;
arr[100]=10;
arr[10000]=5
1
dimabubyakin
159 / 120 / 44
Регистрация: 16.10.2013
Сообщений: 1,738
Завершенные тесты: 5
12.07.2014, 21:55 #21
ValeryS,
Цитата Сообщение от ValeryS Посмотреть сообщение
не является
интересно, а каким же он является?
0
Avazart
Эксперт С++
7262 / 5434 / 304
Регистрация: 10.12.2010
Сообщений: 24,158
Записей в блоге: 17
12.07.2014, 21:57 #22
Цитата Сообщение от ValeryS Посмотреть сообщение
круче vector я видел динамический массив CArray в MFC но он нестандартый
открой для себя std::map<>
0
ValeryS
Модератор
6729 / 5138 / 485
Регистрация: 14.02.2011
Сообщений: 17,254
12.07.2014, 21:59 #23
Цитата Сообщение от Avazart Посмотреть сообщение
Нельзя изменить размер память которая уже выделена, можно только перераспределить память путем копирования в новый массив большего размера
а меньшего?
Цитата Сообщение от Avazart Посмотреть сообщение
Так вектор не что иное как обвертка над "этим массивом",
ничего себе оберточка
Цитата Сообщение от Avazart Посмотреть сообщение
не разобравшись с обычными дин.массивами
new это не динамический массив а динамическое выделение памяти
если бы ты работал хотя бы с Фортраном знал бы что такое динамический массив

Добавлено через 36 секунд
Цитата Сообщение от dimabubyakin Посмотреть сообщение
интересно, а каким же он является?
поменяй размер

Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
открой для себя std::map<>
а что map является массивом?
0
dimabubyakin
159 / 120 / 44
Регистрация: 16.10.2013
Сообщений: 1,738
Завершенные тесты: 5
12.07.2014, 22:02 #24
ValeryS, http://ru.wikipedia.org/wiki/%D0%94%...81%D0%B8%D0%B2

Добавлено через 56 секунд
ValeryS, Даже скопировал
С++:
int *mas = new int[10];
0
Renji
2017 / 1385 / 312
Регистрация: 05.06.2014
Сообщений: 3,953
12.07.2014, 22:03 #25
а что map является массивом?
Если ключами у него int, то разреженным массивом. Вернее, одним из вариантов его реализации.
0
Avazart
Эксперт С++
7262 / 5434 / 304
Регистрация: 10.12.2010
Сообщений: 24,158
Записей в блоге: 17
12.07.2014, 22:04 #26
Цитата Сообщение от ValeryS Посмотреть сообщение
а меньшего?
А в меньшего нет смысла.
Цитата Сообщение от ValeryS Посмотреть сообщение
ничего себе оберточка
Цитата Сообщение от ValeryS Посмотреть сообщение
а что map является массивом?
Что вектор что мап лишь обвертки и не являются массивами.
Цитата Сообщение от ValeryS Посмотреть сообщение
new это не динамический массив а динамическое выделение памяти
если бы ты работал хотя бы с Фортраном знал бы что такое динамический массив
Ох, если бы вы прочил хотя бы одну нормальную книгу по С++ ...
0
ValeryS
Модератор
6729 / 5138 / 485
Регистрация: 14.02.2011
Сообщений: 17,254
12.07.2014, 22:10 #27
и что вы мне все эту ссылку суете
сами то читали?
Динамическим называется массив, размер которого может меняться во время исполнения программы.
и специально про Си(++)
Строго говоря вышеописанная реализация массива не является динамической, так как нет изменения размера массива во время работы, а всего лишь массив переменной длины.
можно реализовать динамический массив при помощи статического(там же написано)
Простейший динамический массив - это массив с фиксированным размером длины, который делится на две части: в первой хранятся элементы динамического массива, а вторая часть является резервной или неиспользуемой.
Добавлено через 2 минуты
Цитата Сообщение от Renji Посмотреть сообщение
Вернее, одним из вариантов его реализации.
способ хранения данных такой же?

Добавлено через 47 секунд
Цитата Сообщение от Avazart Посмотреть сообщение
Ох, если бы вы прочил хотя бы одну нормальную книгу по С++
ссылку пожалуйста, где говорится что new это динамический массив?
0
Avazart
Эксперт С++
7262 / 5434 / 304
Регистрация: 10.12.2010
Сообщений: 24,158
Записей в блоге: 17
12.07.2014, 22:18 #28
Цитата Сообщение от ValeryS Посмотреть сообщение
ссылку пожалуйста, где говорится что new это динамический массив?
В C++ массив выделенный динамически и называется динамическим, ибо других альтернатив ему нет.
1
ValeryS
Модератор
6729 / 5138 / 485
Регистрация: 14.02.2011
Сообщений: 17,254
12.07.2014, 22:23 #29
Цитата Сообщение от Avazart Посмотреть сообщение
В C++ массив выделенный динамически и называется динамическим,
даже в той ссылке которую мне тут впихивают он называется
массив переменной длины.
и далее
Размер массива переменной длины определяется во время выполнения программы. Отличием динамического массива от массива переменной длины является автоматическое изменение размеров, что не трудно реализуется в случаях его отсутствия, поэтому часто не различают массивы переменной длины с динамическими массивами.
не различают это не значит что это одно и тоже

Цитата Сообщение от Avazart Посмотреть сообщение
ибо других альтернатив ему нет.
а vector?
не считая кучи других, часто самопальных реализаций
0
Avazart
Эксперт С++
7262 / 5434 / 304
Регистрация: 10.12.2010
Сообщений: 24,158
Записей в блоге: 17
12.07.2014, 22:25 #30
Цитата Сообщение от ValeryS Посмотреть сообщение
а vector?
не считая кучи других, часто самопальных реализаций
Вот именно это библиотеки не более того.
Вектор содержит в себе внутри тот же массив выделенный с помощью того же new
0
12.07.2014, 22:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2014, 22:25
Привет! Вот еще темы с ответами:

Динамические массивы - C++
Здравствуйте. Задание следующее: Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать. ...

Динамические массивы - C++
Удалить из массива максимальный элемент. Остальные элементы сдвинуть влево (максимальные элемент может встречаться несколько раз) ...

Динамические массивы - C++
помогите выполнить задание #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; #include &lt;time.h&gt; void main() { int...

Динамические массивы - C++
Сформировать динамический двумерный массив, заполнить его случайными числами и вывести на печать. Добавить строку с заданным номером и...


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

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

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