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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
xod
156 / 46 / 17
Регистрация: 01.07.2014
Сообщений: 185
12.07.2014, 21:08     Есть ли в С++ динамические массивы? #1
Я сначала подобный вопрос задал поисковой
системе. Ответ меня обескуражил. Ответы
примерно такие:
1. Нет и не было.
2. Кажется есть оператор New
3. Есть динамическая память
4. Что-то есть, а вам зачем?
Мне все-таки хочется узнать, а лучше
Небольшой конкретный пример, что есть??
И как это использовать?? Что надо подключить??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2014, 21:08     Есть ли в С++ динамические массивы?
Посмотрите здесь:

Динамические массивы. C++
C++ динамические массивы ?
Динамические массивы C++
одномерные массивы, динамические массивы C++
C++ Динамические массивы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimabubyakin
 Аватар для dimabubyakin
158 / 123 / 44
Регистрация: 16.10.2013
Сообщений: 1,731
Завершенные тесты: 5
12.07.2014, 21:55     Есть ли в С++ динамические массивы? #21
ValeryS,
Цитата Сообщение от ValeryS Посмотреть сообщение
не является
интересно, а каким же он является?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,563
Записей в блоге: 17
12.07.2014, 21:57     Есть ли в С++ динамические массивы? #22
Цитата Сообщение от ValeryS Посмотреть сообщение
круче vector я видел динамический массив CArray в MFC но он нестандартый
открой для себя std::map<>
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,039
12.07.2014, 21:59     Есть ли в С++ динамические массивы? #23
Цитата Сообщение от Avazart Посмотреть сообщение
Нельзя изменить размер память которая уже выделена, можно только перераспределить память путем копирования в новый массив большего размера
а меньшего?
Цитата Сообщение от Avazart Посмотреть сообщение
Так вектор не что иное как обвертка над "этим массивом",
ничего себе оберточка
Цитата Сообщение от Avazart Посмотреть сообщение
не разобравшись с обычными дин.массивами
new это не динамический массив а динамическое выделение памяти
если бы ты работал хотя бы с Фортраном знал бы что такое динамический массив

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

Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
открой для себя std::map<>
а что map является массивом?
dimabubyakin
 Аватар для dimabubyakin
158 / 123 / 44
Регистрация: 16.10.2013
Сообщений: 1,731
Завершенные тесты: 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];
Renji
1532 / 980 / 238
Регистрация: 05.06.2014
Сообщений: 2,950
12.07.2014, 22:03     Есть ли в С++ динамические массивы? #25
а что map является массивом?
Если ключами у него int, то разреженным массивом. Вернее, одним из вариантов его реализации.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,563
Записей в блоге: 17
12.07.2014, 22:04     Есть ли в С++ динамические массивы? #26
Цитата Сообщение от ValeryS Посмотреть сообщение
а меньшего?
А в меньшего нет смысла.
Цитата Сообщение от ValeryS Посмотреть сообщение
ничего себе оберточка
Цитата Сообщение от ValeryS Посмотреть сообщение
а что map является массивом?
Что вектор что мап лишь обвертки и не являются массивами.
Цитата Сообщение от ValeryS Посмотреть сообщение
new это не динамический массив а динамическое выделение памяти
если бы ты работал хотя бы с Фортраном знал бы что такое динамический массив
Ох, если бы вы прочил хотя бы одну нормальную книгу по С++ ...
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,039
12.07.2014, 22:10     Есть ли в С++ динамические массивы? #27
и что вы мне все эту ссылку суете
сами то читали?
Динамическим называется массив, размер которого может меняться во время исполнения программы.
и специально про Си(++)
Строго говоря вышеописанная реализация массива не является динамической, так как нет изменения размера массива во время работы, а всего лишь массив переменной длины.
можно реализовать динамический массив при помощи статического(там же написано)
Простейший динамический массив - это массив с фиксированным размером длины, который делится на две части: в первой хранятся элементы динамического массива, а вторая часть является резервной или неиспользуемой.
Добавлено через 2 минуты
Цитата Сообщение от Renji Посмотреть сообщение
Вернее, одним из вариантов его реализации.
способ хранения данных такой же?

Добавлено через 47 секунд
Цитата Сообщение от Avazart Посмотреть сообщение
Ох, если бы вы прочил хотя бы одну нормальную книгу по С++
ссылку пожалуйста, где говорится что new это динамический массив?
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,563
Записей в блоге: 17
12.07.2014, 22:18     Есть ли в С++ динамические массивы? #28
Цитата Сообщение от ValeryS Посмотреть сообщение
ссылку пожалуйста, где говорится что new это динамический массив?
В C++ массив выделенный динамически и называется динамическим, ибо других альтернатив ему нет.
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,039
12.07.2014, 22:23     Есть ли в С++ динамические массивы? #29
Цитата Сообщение от Avazart Посмотреть сообщение
В C++ массив выделенный динамически и называется динамическим,
даже в той ссылке которую мне тут впихивают он называется
массив переменной длины.
и далее
Размер массива переменной длины определяется во время выполнения программы. Отличием динамического массива от массива переменной длины является автоматическое изменение размеров, что не трудно реализуется в случаях его отсутствия, поэтому часто не различают массивы переменной длины с динамическими массивами.
не различают это не значит что это одно и тоже

Цитата Сообщение от Avazart Посмотреть сообщение
ибо других альтернатив ему нет.
а vector?
не считая кучи других, часто самопальных реализаций
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,563
Записей в блоге: 17
12.07.2014, 22:25     Есть ли в С++ динамические массивы? #30
Цитата Сообщение от ValeryS Посмотреть сообщение
а vector?
не считая кучи других, часто самопальных реализаций
Вот именно это библиотеки не более того.
Вектор содержит в себе внутри тот же массив выделенный с помощью того же new
mishelle92
57 / 56 / 19
Регистрация: 09.10.2012
Сообщений: 179
Завершенные тесты: 1
12.07.2014, 22:25     Есть ли в С++ динамические массивы? #31
Цитата Сообщение от Avazart Посмотреть сообщение
В C++ массив выделенный динамически и называется динамическим, ибо других альтернатив ему нет.
Поддерживаю!
0x10
12.07.2014, 22:26
  #32

Не по теме:

Как же тут любят терминологический спор... Особенно когда каждый говорит в своем контексте.

dimabubyakin
12.07.2014, 22:27
  #33

Не по теме:

Думаю дальнейшее продолжение споров излишне)

gru74ik
Модератор
 Аватар для gru74ik
3069 / 1314 / 164
Регистрация: 20.02.2013
Сообщений: 3,748
Записей в блоге: 15
12.07.2014, 22:30     Есть ли в С++ динамические массивы? #34
Цитата Сообщение от ValeryS Посмотреть сообщение
ссылку пожалуйста, где говорится что new это динамический массив?
Стивен Прата - Язык программирования С++ (2012, 6-е издание), глава 4, стр. 176:

Создание динамического массива с помощью операции new
Создать динамический массив на C++ легко; вы сообщаете операции new тип
элементов массива и требуемое количество элементов. Синтаксис, необходимый для
этого, предусматривает указание имени типа с количеством элементов в квадратных
скобках. Например, если необходим массив из 10 элементов int, следует записать
так:
int * psome = new int [10] ; // получение блока памяти из 10 элементов типа int
Операция new возвращает адрес первого элемента в блоке. В данном примере это
значение присваивается указателю psome.
Как всегда, вы должны сбалансировать каждый вызов new соответствующим
вызовом delete, когда программа завершает работу с этим блоком памяти. Однако
использование new с квадратными скобками для создания массива требует применения
альтернативной формы delete при освобождении массива:
delete [] psome; // освобождение динамического массива
Присутствие квадратных скобок сообщает программе, что она должна освободить
весь массив, а не только один элемент, на который указывает указатель. Обратите
внимание, что скобки расположены между delete и указателем.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
12.07.2014, 22:41     Есть ли в С++ динамические массивы? #35

Не по теме:

- Гоги, что такое ос?
- Ос - это балшой паласатый мух!
- Нэт, Гоги. Балшой паласатый мух - это шмел. А ос - это прямой, вокруг чего крутыцца Земля!


С одной стороны у нас есть С++, где массив, память для которого выделяется динамически в куче, для краткости назыавется динамическим.
С другой - дисциплина "Структуры и алгоритмы обработки данных", которая определяет динамический массив как структуру с определенными свойствами (константа времени по доступу, динамически изменяющийся размер хранилища). И ей плевать на каком вы там языке ее реализуете.
Komi
 Аватар для Komi
6 / 6 / 2
Регистрация: 10.08.2012
Сообщений: 82
12.07.2014, 22:43     Есть ли в С++ динамические массивы? #36
Вектор это не динамический массив, но имеет ту же функциональность, и удобнее намного, так что используй его на ура, только знай что это не правильный ответ
Renji
1532 / 980 / 238
Регистрация: 05.06.2014
Сообщений: 2,950
12.07.2014, 22:43     Есть ли в С++ динамические массивы? #37
способ хранения данных такой же?
Такой же как что? Разреженный массив не должен выделять памяти под те элементы, которые не используются. Эти элементы могут располагаться у него в середине. Каким шаманством в середине массива получается дырка - роли не играет. Но да, это шаманство скорее всего будет вариацией на тему map/unordered_map.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,563
Записей в блоге: 17
12.07.2014, 22:46     Есть ли в С++ динамические массивы? #38
Цитата Сообщение от Renji Посмотреть сообщение
Каким шаманством в середине массива получается дырка - роли не играет.
В С++ играет, ибо как говорят: на С++ нужно писать эффективный код, ибо неэффективный код можно писать и на других языках.
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,039
12.07.2014, 22:54     Есть ли в С++ динамические массивы? #39
Avazart,
поиск в стандарте по ключевым словам "dynamic array"
дал 7 ссылок и все они в главе " D.7 char* streams "
так что выводы каждый делает для себя я лично спор прекращаю
Ибо бесполезен он
Лично я поддерживаю
Цитата Сообщение от 0x10 Посмотреть сообщение
динамический массив как структуру с определенными свойствами (константа времени по доступу, динамически изменяющийся размер хранилища).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2014, 22:56     Есть ли в С++ динамические массивы?
Еще ссылки по теме:

Указатели и массивы. Индексация с помощью указателей. Передача массивов в функции. Динамические массивы (обработка матриц) C++
Динамические массивы и функции. Динамические массивы. C++
Зачем нужны обычные массивы, если есть динамические? C++

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,563
Записей в блоге: 17
12.07.2014, 22:56     Есть ли в С++ динамические массивы? #40
Цитата Сообщение от ValeryS Посмотреть сообщение
Лично я поддерживаю
Поддерживайте в разделе "Структуры и алгоритмы обработки данных" а не в разделе С++, нечего народ путать.
Yandex
Объявления
12.07.2014, 22:56     Есть ли в С++ динамические массивы?
Закрытая тема Создать тему
Опции темы

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