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

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

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

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

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

Я сначала подобный вопрос задал поисковой
системе. Ответ меня обескуражил. Ответы
примерно такие:
1. Нет и не было.
2. Кажется есть оператор New
3. Есть динамическая память
4. Что-то есть, а вам зачем?
Мне все-таки хочется узнать, а лучше
Небольшой конкретный пример, что есть??
И как это использовать?? Что надо подключить??
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mishelle92
61 / 60 / 20
Регистрация: 09.10.2012
Сообщений: 190
Завершенные тесты: 1
12.07.2014, 22:25     Есть ли в С++ динамические массивы? #31
Цитата Сообщение от Avazart Посмотреть сообщение
В C++ массив выделенный динамически и называется динамическим, ибо других альтернатив ему нет.
Поддерживаю!
0x10
12.07.2014, 22:26
  #32

Не по теме:

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

dimabubyakin
12.07.2014, 22:27
  #33

Не по теме:

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

gru74ik
Модератор
Эксперт CЭксперт С++
4108 / 1753 / 197
Регистрация: 20.02.2013
Сообщений: 4,857
Записей в блоге: 21
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
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
12.07.2014, 22:41     Есть ли в С++ динамические массивы? #35

Не по теме:

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


С одной стороны у нас есть С++, где массив, память для которого выделяется динамически в куче, для краткости назыавется динамическим.
С другой - дисциплина "Структуры и алгоритмы обработки данных", которая определяет динамический массив как структуру с определенными свойствами (константа времени по доступу, динамически изменяющийся размер хранилища). И ей плевать на каком вы там языке ее реализуете.
Komi
6 / 6 / 2
Регистрация: 10.08.2012
Сообщений: 82
12.07.2014, 22:43     Есть ли в С++ динамические массивы? #36
Вектор это не динамический массив, но имеет ту же функциональность, и удобнее намного, так что используй его на ура, только знай что это не правильный ответ
Renji
1878 / 1276 / 290
Регистрация: 05.06.2014
Сообщений: 3,642
12.07.2014, 22:43     Есть ли в С++ динамические массивы? #37
способ хранения данных такой же?
Такой же как что? Разреженный массив не должен выделять памяти под те элементы, которые не используются. Эти элементы могут располагаться у него в середине. Каким шаманством в середине массива получается дырка - роли не играет. Но да, это шаманство скорее всего будет вариацией на тему map/unordered_map.
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,453
Записей в блоге: 17
12.07.2014, 22:46     Есть ли в С++ динамические массивы? #38
Цитата Сообщение от Renji Посмотреть сообщение
Каким шаманством в середине массива получается дырка - роли не играет.
В С++ играет, ибо как говорят: на С++ нужно писать эффективный код, ибо неэффективный код можно писать и на других языках.
ValeryS
Модератор
6552 / 5018 / 463
Регистрация: 14.02.2011
Сообщений: 16,739
12.07.2014, 22:54     Есть ли в С++ динамические массивы? #39
Avazart,
поиск в стандарте по ключевым словам "dynamic array"
дал 7 ссылок и все они в главе " D.7 char* streams "
так что выводы каждый делает для себя я лично спор прекращаю
Ибо бесполезен он
Лично я поддерживаю
Цитата Сообщение от 0x10 Посмотреть сообщение
динамический массив как структуру с определенными свойствами (константа времени по доступу, динамически изменяющийся размер хранилища).
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,453
Записей в блоге: 17
12.07.2014, 22:56     Есть ли в С++ динамические массивы? #40
Цитата Сообщение от ValeryS Посмотреть сообщение
Лично я поддерживаю
Поддерживайте в разделе "Структуры и алгоритмы обработки данных" а не в разделе С++, нечего народ путать.
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
12.07.2014, 23:41     Есть ли в С++ динамические массивы? #41
Цитата Сообщение от Avazart Посмотреть сообщение
В C++ массив выделенный динамически и называется динамическим, ибо других альтернатив ему нет.
Из динамического у него только dynamic storage duration. То, что вектор может динамически расширяться - заслуга вектора, а не динамических массивов.
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,453
Записей в блоге: 17
12.07.2014, 23:46     Есть ли в С++ динамические массивы? #42
Цитата Сообщение от Croessmah Посмотреть сообщение
Из динамического у него только dynamic storage duration. То, что вектор может динамически расширяться - заслуга вектора, а не динамических массивов.
Вы о чем ?
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
12.07.2014, 23:50     Есть ли в С++ динамические массивы? #43
Цитата Сообщение от Avazart Посмотреть сообщение
Вы о чем ?
о том что выделенная динамически память сама по себе динамической(расширяемой) не является. Она динамическая только из-за "класса памяти", а не из-за расширяемости. Вектор же просто "оборачивает" всё это, создавая необходимое поведение. В понятия самого языка нет динамических массивов. Если бы были, это выглядело бы как-то так:
C++
1
2
int arr[] ;
arr[100] = 300 ;
Цитата Сообщение от Avazart Посмотреть сообщение
открой для себя std::map<>
это явно не массив.


Да и спор этот бесполезный, потому что с одной стороны вектор - динамический массив(точнее последовательный контейнер), а с другой стороны в самом языке нет динамических массивов.
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,453
Записей в блоге: 17
13.07.2014, 00:19     Есть ли в С++ динамические массивы? #44
Цитата Сообщение от Croessmah Посмотреть сообщение
Вектор же просто "оборачивает" всё это, создавая необходимое поведение
Вы процитировали меня где я говорил про массив, а не про вектор.

Добавлено через 3 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
это явно не массив.
А я и не говорил что массив.
Кстати разве приведенный класс MFC - массив?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2014, 00:30     Есть ли в С++ динамические массивы?
Еще ссылки по теме:
C++ Динамические массивы
C++ Динамические массивы
C++ Динамические массивы
Динамические массивы. C++
Динамические массивы. C++

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
13.07.2014, 00:30     Есть ли в С++ динамические массивы? #45
Цитата Сообщение от Avazart Посмотреть сообщение
Кстати разве приведенный класс MFC - массив?
Без понятия, никогда им не пользовался, но называется CArray
Цитата Сообщение от Avazart Посмотреть сообщение
Вы процитировали меня где я говорил про массив, а не про вектор.
Ну так сюда я вектор вставил для противовеса.
А так акцент был на:
о том что выделенная динамически память сама по себе динамической(расширяемой) не является.
Yandex
Объявления
13.07.2014, 00:30     Есть ли в С++ динамические массивы?
Закрытая тема Создать тему
Опции темы

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