Форум программистов, компьютерный форум 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++ Динамические массивы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
12.07.2014, 23:41     Есть ли в С++ динамические массивы? #41
Цитата Сообщение от Avazart Посмотреть сообщение
В C++ массив выделенный динамически и называется динамическим, ибо других альтернатив ему нет.
Из динамического у него только dynamic storage duration. То, что вектор может динамически расширяться - заслуга вектора, а не динамических массивов.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,578
Записей в блоге: 17
12.07.2014, 23:46     Есть ли в С++ динамические массивы? #42
Цитата Сообщение от Croessmah Посмотреть сообщение
Из динамического у него только dynamic storage duration. То, что вектор может динамически расширяться - заслуга вектора, а не динамических массивов.
Вы о чем ?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
12.07.2014, 23:50     Есть ли в С++ динамические массивы? #43
Цитата Сообщение от Avazart Посмотреть сообщение
Вы о чем ?
о том что выделенная динамически память сама по себе динамической(расширяемой) не является. Она динамическая только из-за "класса памяти", а не из-за расширяемости. Вектор же просто "оборачивает" всё это, создавая необходимое поведение. В понятия самого языка нет динамических массивов. Если бы были, это выглядело бы как-то так:
C++
1
2
int arr[] ;
arr[100] = 300 ;
Цитата Сообщение от Avazart Посмотреть сообщение
открой для себя std::map<>
это явно не массив.


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

Добавлено через 3 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
это явно не массив.
А я и не говорил что массив.
Кстати разве приведенный класс MFC - массив?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
13.07.2014, 00:30     Есть ли в С++ динамические массивы? #45
Цитата Сообщение от Avazart Посмотреть сообщение
Кстати разве приведенный класс MFC - массив?
Без понятия, никогда им не пользовался, но называется CArray
Цитата Сообщение от Avazart Посмотреть сообщение
Вы процитировали меня где я говорил про массив, а не про вектор.
Ну так сюда я вектор вставил для противовеса.
А так акцент был на:
о том что выделенная динамически память сама по себе динамической(расширяемой) не является.
gru74ik
Модератор
 Аватар для gru74ik
3083 / 1328 / 165
Регистрация: 20.02.2013
Сообщений: 3,785
Записей в блоге: 17
13.07.2014, 00:30     Есть ли в С++ динамические массивы? #46
Может вот это поможет нам лучше понять друг друга?
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,578
Записей в блоге: 17
13.07.2014, 00:34     Есть ли в С++ динамические массивы? #47
Цитата Сообщение от Croessmah Посмотреть сообщение
Ну так сюда я вектор вставил для противовеса.
Ну так вектор, это класс библиотеки, так что в качестве противовеса не годится, поэтому я сказал что его нет...
На то он и вектор что вектор а не какой-то там СArray
Цитата Сообщение от Croessmah Посмотреть сообщение
А так акцент был на:
Цитата Сообщение от Croessmah Посмотреть сообщение
о том что выделенная динамически память сама по себе динамической(расширяемой) не является.
Ну так я как бы ничего противоположного не утверждал, что бы меня цитировать
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
13.07.2014, 02:43     Есть ли в С++ динамические массивы? #48
Блин, ребят, хватит спорить о том, что круче - структура данных или её реализация в конкретном языке

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

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

И да, списки часто реализуются как массивы, реаллокирующие память по мере необходимости.
gru74ik
Модератор
 Аватар для gru74ik
3083 / 1328 / 165
Регистрация: 20.02.2013
Сообщений: 3,785
Записей в блоге: 17
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.
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
13.07.2014, 03:29     Есть ли в С++ динамические массивы? #50
gru74ik, при чем тут стандарт языка? Стандарты могут различаться и даже противоречить друг другу. Можно конечно сказать, что "это раздел С++ поэтому это истина в последней инстанции". В таком случае "динамический массив" можно означать что угодно, в зависимости от вкладываемого в слово "динамический" смысл.

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

всем бобра.
gru74ik
Модератор
 Аватар для gru74ik
3083 / 1328 / 165
Регистрация: 20.02.2013
Сообщений: 3,785
Записей в блоге: 17
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"? Самописный аналог вектора? Или что-то иное?
Mr.X
Эксперт С++
 Аватар для Mr.X
2799 / 1575 / 246
Регистрация: 03.05.2010
Сообщений: 3,656
13.07.2014, 05:52     Есть ли в С++ динамические массивы? #52
Цитата Сообщение от gru74ik Посмотреть сообщение
Может вот это поможет нам лучше понять друг друга?
Язык-прайм является таким языком, в котором запрещено слово "является".
По-моему бред какой-то. Каждый язык состоит из слов, которые обозначают понятия и сущности. А как мы можем их определить без слова "является"? Т.е. это язык, отрицающий сам себя.
Croessmah
13.07.2014, 06:18
  #53

Не по теме:

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

Mr.X
Эксперт С++
 Аватар для Mr.X
2799 / 1575 / 246
Регистрация: 03.05.2010
Сообщений: 3,656
13.07.2014, 06:22     Есть ли в С++ динамические массивы? #54
А, почитал дальше, они предлагают заменить слово "является" на "кажется". А синонимы слова "кажется" - это чудится, бредится и мерещится. Т.е. этот язык предлагает нам погрузиться в состояние бреда.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2014, 09:37     Есть ли в С++ динамические массивы?
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
gru74ik
Модератор
 Аватар для gru74ik
3083 / 1328 / 165
Регистрация: 20.02.2013
Сообщений: 3,785
Записей в блоге: 17
13.07.2014, 09:37     Есть ли в С++ динамические массивы? #55
Цитата Сообщение от Mr.X Посмотреть сообщение
они предлагают заменить слово "является" на "кажется". А синонимы слова "кажется" - это чудится, бредится и мерещится. Т.е. этот язык предлагает нам погрузиться в состояние бреда.
А Вы уже успешно заменили действие "мыслю" на "не поняв предмета, куражусь, утрирую, раздуваю своё ЧСВ" - что уж скажешь, похоже, Вам есть чем гордиться!
Yandex
Объявления
13.07.2014, 09:37     Есть ли в С++ динамические массивы?
Закрытая тема Создать тему
Опции темы

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