Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
1

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

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

Author24 — интернет-сервис помощи студентам
Я сначала подобный вопрос задал поисковой
системе. Ответ меня обескуражил. Ответы
примерно такие:
1. Нет и не было.
2. Кажется есть оператор New
3. Есть динамическая память
4. Что-то есть, а вам зачем?
Мне все-таки хочется узнать, а лучше
Небольшой конкретный пример, что есть??
И как это использовать?? Что надо подключить??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.07.2014, 21:08
Ответы с готовыми решениями:

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

Есть динамические массивы А и Б. Создать массив С,который состоит из элементом массива А,которых нет в массиве Б
Доброго времени суток , у меня есть код,который частично выполняет данную задачу для статического...

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

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

54
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
12.07.2014, 23:41 41
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Avazart Посмотреть сообщение
В C++ массив выделенный динамически и называется динамическим, ибо других альтернатив ему нет.
Из динамического у него только dynamic storage duration. То, что вектор может динамически расширяться - заслуга вектора, а не динамических массивов.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
12.07.2014, 23:46 42
Цитата Сообщение от Croessmah Посмотреть сообщение
Из динамического у него только dynamic storage duration. То, что вектор может динамически расширяться - заслуга вектора, а не динамических массивов.
Вы о чем ?
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
12.07.2014, 23:50 43
Цитата Сообщение от Avazart Посмотреть сообщение
Вы о чем ?
о том что выделенная динамически память сама по себе динамической(расширяемой) не является. Она динамическая только из-за "класса памяти", а не из-за расширяемости. Вектор же просто "оборачивает" всё это, создавая необходимое поведение. В понятия самого языка нет динамических массивов. Если бы были, это выглядело бы как-то так:
C++
1
2
int arr[] ;
arr[100] = 300 ;
Цитата Сообщение от Avazart Посмотреть сообщение
открой для себя std::map<>
это явно не массив.


Да и спор этот бесполезный, потому что с одной стороны вектор - динамический массив(точнее последовательный контейнер), а с другой стороны в самом языке нет динамических массивов.
2
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.07.2014, 00:19 44
Цитата Сообщение от Croessmah Посмотреть сообщение
Вектор же просто "оборачивает" всё это, создавая необходимое поведение
Вы процитировали меня где я говорил про массив, а не про вектор.

Добавлено через 3 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
это явно не массив.
А я и не говорил что массив.
Кстати разве приведенный класс MFC - массив?
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
13.07.2014, 00:30 45
Цитата Сообщение от Avazart Посмотреть сообщение
Кстати разве приведенный класс MFC - массив?
Без понятия, никогда им не пользовался, но называется CArray
Цитата Сообщение от Avazart Посмотреть сообщение
Вы процитировали меня где я говорил про массив, а не про вектор.
Ну так сюда я вектор вставил для противовеса.
А так акцент был на:
о том что выделенная динамически память сама по себе динамической(расширяемой) не является.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
13.07.2014, 00:30 46
Может вот это поможет нам лучше понять друг друга?
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.07.2014, 00:34 47
Цитата Сообщение от Croessmah Посмотреть сообщение
Ну так сюда я вектор вставил для противовеса.
Ну так вектор, это класс библиотеки, так что в качестве противовеса не годится, поэтому я сказал что его нет...
На то он и вектор что вектор а не какой-то там СArray
Цитата Сообщение от Croessmah Посмотреть сообщение
А так акцент был на:
Цитата Сообщение от Croessmah Посмотреть сообщение
о том что выделенная динамически память сама по себе динамической(расширяемой) не является.
Ну так я как бы ничего противоположного не утверждал, что бы меня цитировать
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
13.07.2014, 02:43 48
Блин, ребят, хватит спорить о том, что круче - структура данных или её реализация в конкретном языке

А вообще внезапно вопровусь и скажу, что динамический массив - это вообще бредовое определение, которым вне стен университетов этой страны особо не пользуются. Есть понятие массива - структура данных неизменяемого размера с прямым доступом к элементам. Выделили мы её динамически или еще как - структура статична. Есть понятие списка - можем добавлять/удалять элементы в рантайме, длина не задается фиксированной.

Динамический массив получается чем-то среднем, вроде списка с прямым индексным доступом, но с точки зрения теории структур данных такой структуры не существует

И да, списки часто реализуются как массивы, реаллокирующие память по мере необходимости.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
13.07.2014, 03:25 49
Цитата Сообщение от Psilon Посмотреть сообщение
динамический массив - это вообще бредовое определение
Бредовое не бредовое, а в стандарте словосочетание dynamic array имеет место быть:

INCITS+ISO+IEC+14882-2003, страница 712:
The classstrstreambuf associates the input sequence, and possibly the output sequence, with an object
of some character array type, whose elements store arbitrary values. The array object has several
attributes.
2 [Note:For the sake of exposition, these are represented as elements of a bitmask type (indicated here asT1)
calledstrstate. The elements are:
—allocated, set when a dynamic array object has been allocated, and hence should be freed by the
destructor for the strstreambuf object;
—constant, set when the array object has const elements, so the output sequence cannot be written;
—dynamic, set when the array object is allocated (or reallocated) as necessary to hold a character
sequence that can change in length;
—frozen, set when the program has requested that the array object not be altered, reallocated, or freed.
—end note]
3 [Note:For the sake of exposition, the maintained data is presented here as:
—strstate strmode, the attributes of the array object associated with the strstreambuf object;
—intalsize, the suggested minimum size for a dynamic array object;
—void* (*palloc)(size_t), points to the function to call to allocate a dynamic array object;
—void (*pfree)(void*), points to the function to call to free a dynamic array object. —end note]
4 Each object of classstrstreambuf has aseekable area, delimited by the pointers seeklow and
seekhigh. If gnextis a null pointer, the seekable area is undefined. Otherwise, seeklow equals
gbegand seekhighis eitherpend, ifpendis not a null pointer, orgend.
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
13.07.2014, 03:29 50
gru74ik, при чем тут стандарт языка? Стандарты могут различаться и даже противоречить друг другу. Можно конечно сказать, что "это раздел С++ поэтому это истина в последней инстанции". В таком случае "динамический массив" можно означать что угодно, в зависимости от вкладываемого в слово "динамический" смысл.

Но с точки зрения информатики такой структуры данных не существует, поэтому спор ни о чем. Есть списки, есть массивы, каждый выбирает, что для текущей задачи лучше!

всем бобра.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
13.07.2014, 04:10 51
Цитата Сообщение от Psilon Посмотреть сообщение
Но с точки зрения информатики такой структуры данных не существует, поэтому спор ни о чем. Есть списки, есть массивы, каждый выбирает, что для текущей задачи лучше!
Согласен. Просто эта путаница идёт из учёбной литературы, в которой это словосочетание используется. Новичкам в С++ (типа меня и ТС) до вот такого топика-холивара проблема применения термина dynamic array в разных контекстах вообще была неведома. Я как у Праты прочитал, так и считал, что динамический массив - это та самая хреновина с операторами new и delete, а контейнер vector - просто более удобный его вариант, с кучей методов.

У Страуструпа в четвёртом издании его "C++ programming language" этот термин появляется только один раз и там он как раз советует использовать векторы (стр. 1277):
Variable-length arrays (VLAs); use vector or some form of dynamic array
но что это за "some form of dynamic array"? Самописный аналог вектора? Или что-то иное?
2
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
13.07.2014, 05:52 52
Цитата Сообщение от gru74ik Посмотреть сообщение
Может вот это поможет нам лучше понять друг друга?
Язык-прайм является таким языком, в котором запрещено слово "является".
По-моему бред какой-то. Каждый язык состоит из слов, которые обозначают понятия и сущности. А как мы можем их определить без слова "является"? Т.е. это язык, отрицающий сам себя.
0
Croessmah
13.07.2014, 06:18
  #53

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
Просто эта путаница идёт из учёбной литературы, в которой это словосочетание используется.
ИМХО, еще больше путаницы с сочетанием "статическая переменная", то есть та, которая автоматическая.

0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
13.07.2014, 06:22 54
А, почитал дальше, они предлагают заменить слово "является" на "кажется". А синонимы слова "кажется" - это чудится, бредится и мерещится. Т.е. этот язык предлагает нам погрузиться в состояние бреда.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
13.07.2014, 09:37 55
Цитата Сообщение от Mr.X Посмотреть сообщение
они предлагают заменить слово "является" на "кажется". А синонимы слова "кажется" - это чудится, бредится и мерещится. Т.е. этот язык предлагает нам погрузиться в состояние бреда.
А Вы уже успешно заменили действие "мыслю" на "не поняв предмета, куражусь, утрирую, раздуваю своё ЧСВ" - что уж скажешь, похоже, Вам есть чем гордиться!
0
13.07.2014, 09:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.07.2014, 09:37
Помогаю со студенческими работами здесь

Структуры, массивы, указатели, динамические массивы структур
Помогите с решением задачи (прикрепляю условие). Заранее спасибо.

Статические массивы,Динамические массивы,строки
1)Создать двумерный массив A(N,M) целых положительных и отрицательных чисел с помощью функции...

Динамические массивы
Доброго времени, ищу помощи по данному вопросу, сам разобраться не в состоянии в виду полного...

Динамические массивы
Создать класс Organization. Переменная типа Organization должна содержать следующую информацию:...

Динамические массивы
Помогите, пожалуйста, написать программу используя динамические массивы. Задание: Составить...

Динамические массивы
В java же есть понятие динамических массивов? если допустим есть у меня массив cтрок: public...


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

Или воспользуйтесь поиском по форуму:
55
Закрытая тема Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru