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

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

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

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

12.07.2014, 21:08. Просмотров 1686. Ответов 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
mishelle92
62 / 61 / 20
Регистрация: 09.10.2012
Сообщений: 201
Завершенные тесты: 1
12.07.2014, 22:25 #31
Цитата Сообщение от Avazart Посмотреть сообщение
В C++ массив выделенный динамически и называется динамическим, ибо других альтернатив ему нет.
Поддерживаю!
0
0x10
12.07.2014, 22:26
  #32

Не по теме:

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

1
dimabubyakin
12.07.2014, 22:27
  #33

Не по теме:

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

0
gru74ik
Модератор
Эксперт CЭксперт С++
4196 / 1844 / 198
Регистрация: 20.02.2013
Сообщений: 4,991
Записей в блоге: 22
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 и указателем.
2
0x10
2479 / 1652 / 248
Регистрация: 24.11.2012
Сообщений: 4,095
12.07.2014, 22:41 #35

Не по теме:

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


С одной стороны у нас есть С++, где массив, память для которого выделяется динамически в куче, для краткости назыавется динамическим.
С другой - дисциплина "Структуры и алгоритмы обработки данных", которая определяет динамический массив как структуру с определенными свойствами (константа времени по доступу, динамически изменяющийся размер хранилища). И ей плевать на каком вы там языке ее реализуете.
3
Komi
6 / 6 / 2
Регистрация: 10.08.2012
Сообщений: 82
12.07.2014, 22:43 #36
Вектор это не динамический массив, но имеет ту же функциональность, и удобнее намного, так что используй его на ура, только знай что это не правильный ответ
1
Renji
1999 / 1367 / 308
Регистрация: 05.06.2014
Сообщений: 3,899
12.07.2014, 22:43 #37
способ хранения данных такой же?
Такой же как что? Разреженный массив не должен выделять памяти под те элементы, которые не используются. Эти элементы могут располагаться у него в середине. Каким шаманством в середине массива получается дырка - роли не играет. Но да, это шаманство скорее всего будет вариацией на тему map/unordered_map.
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,047
Записей в блоге: 17
12.07.2014, 22:46 #38
Цитата Сообщение от Renji Посмотреть сообщение
Каким шаманством в середине массива получается дырка - роли не играет.
В С++ играет, ибо как говорят: на С++ нужно писать эффективный код, ибо неэффективный код можно писать и на других языках.
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,198
12.07.2014, 22:54 #39
Avazart,
поиск в стандарте по ключевым словам "dynamic array"
дал 7 ссылок и все они в главе " D.7 char* streams "
так что выводы каждый делает для себя я лично спор прекращаю
Ибо бесполезен он
Лично я поддерживаю
Цитата Сообщение от 0x10 Посмотреть сообщение
динамический массив как структуру с определенными свойствами (константа времени по доступу, динамически изменяющийся размер хранилища).
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,047
Записей в блоге: 17
12.07.2014, 22:56 #40
Цитата Сообщение от ValeryS Посмотреть сообщение
Лично я поддерживаю
Поддерживайте в разделе "Структуры и алгоритмы обработки данных" а не в разделе С++, нечего народ путать.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
12.07.2014, 23:41 #41
Цитата Сообщение от Avazart Посмотреть сообщение
В C++ массив выделенный динамически и называется динамическим, ибо других альтернатив ему нет.
Из динамического у него только dynamic storage duration. То, что вектор может динамически расширяться - заслуга вектора, а не динамических массивов.
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,047
Записей в блоге: 17
12.07.2014, 23:46 #42
Цитата Сообщение от Croessmah Посмотреть сообщение
Из динамического у него только dynamic storage duration. То, что вектор может динамически расширяться - заслуга вектора, а не динамических массивов.
Вы о чем ?
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
12.07.2014, 23:50 #43
Цитата Сообщение от Avazart Посмотреть сообщение
Вы о чем ?
о том что выделенная динамически память сама по себе динамической(расширяемой) не является. Она динамическая только из-за "класса памяти", а не из-за расширяемости. Вектор же просто "оборачивает" всё это, создавая необходимое поведение. В понятия самого языка нет динамических массивов. Если бы были, это выглядело бы как-то так:
C++
1
2
int arr[] ;
arr[100] = 300 ;
Цитата Сообщение от Avazart Посмотреть сообщение
открой для себя std::map<>
это явно не массив.


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

Добавлено через 3 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
это явно не массив.
А я и не говорил что массив.
Кстати разве приведенный класс MFC - массив?
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
13.07.2014, 00:30 #45
Цитата Сообщение от Avazart Посмотреть сообщение
Кстати разве приведенный класс MFC - массив?
Без понятия, никогда им не пользовался, но называется CArray
Цитата Сообщение от Avazart Посмотреть сообщение
Вы процитировали меня где я говорил про массив, а не про вектор.
Ну так сюда я вектор вставил для противовеса.
А так акцент был на:
о том что выделенная динамически память сама по себе динамической(расширяемой) не является.
0
13.07.2014, 00:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2014, 00:30
Привет! Вот еще темы с ответами:

Динамические массивы - 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++
Сформировать динамический двумерный массив, заполнить его случайными числами и вывести на печать. Добавить строку с заданным номером и...


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

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

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