![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
Есть не только многомерные массивы, но и стандартные средства для анализа расширений типа времени компиляции. Например: http://www.cplusplus.com/reference/type_traits/rank/ http://www.cplusplus.com/reference/type_traits/extent/ |
|
![]() |
![]() |
![]() |
#12 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#13 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
Вектор - это контейнер. Такой же полноценный класс, как например, лист, или сет. Мы можете завелосипедить свой собственный контейнер. И тогда у вас будет на один контейнер больше, но по прежнему ни одного динамического массива. |
|
![]() |
![]() |
![]() |
#14 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]() Цитата:
Я так понимаю, что с точки зрения rank<> T** - это не массив вообще. Либо он вернет ноль, либо вообще выкинет предупреждение о неверном типе (не знаю что именно). |
|
![]() |
![]() |
![]() |
#15 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#16 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
Массивы не содержат никакой метаинформации. Однако, поскольку их размерность известна времени компиляции, то на на языке с++ эту информацию можно извлекать с помощью шаблонов. (см пост #9) Мне не понятна эта запись. Последний раз редактировалось _Bers; 01.09.2014 в 20:05. |
|
![]() |
![]() |
![]() |
#17 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
В стандарте языка с++ отсутствует определения динамического массива. Вы не сможете продекларировать определение динамического массива с++ потому что его не существует. Следовательно, то о чем вы сейчас сообщаете - чушь. Последний раз редактировалось _Bers; 01.09.2014 в 20:04. |
|
![]() |
![]() |
![]() |
#18 | ||
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]() Цитата:
Посмотри определение динамического массива (из любой литературы) и описание вектора (из стандарта). Разница будет в одном слове - "структура данных" и "контейнер". Если подогнать определение структуры под определение контейнера нельзя, то в другу сторону можно. Цитата:
Поэтому динамический массив не определяется через вектор, а вектор определяется через динамический массив. Я там выше писал, что мир стандартом не заканчивается. Куча определений существует вне него и существовала до него. Последний раз редактировалось rrrFer; 02.09.2014 в 04:52. |
||
![]() |
![]() |
![]() |
#19 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
Приводите точный текст формулировок. Если конечно сможете. Это я к тому, что: 1. Определение из любой литературы - сразу в топку. Требуется формальное определение динамического массива, пусть и без привязки к конкретному ЯП, но все таки относящееся к типу языка программирования. (хотя и не очевидно, зачем нужно оперировать определением одного языка программирования, когда речь совсем о другом). 2. В стандарте плюсов нет ни слова ни о динамических контейнерах, ни о векторе. 3. Единственное ближайшее подобие у вас получится только для языка си: variable-length array array data structure of automatic storage duration whose length is determined at run time (instead of at compile time). The following C99 function allocates a variable-length array of a specified size, fills it with floating-point values, then passes it to another function for processing. Because the array is declared as an automatic variable, its lifetime ends when the read_and_process function returns. Код:
И разница не просто в словах. Формальное определение стандарта - это больше, чем просто слова. В данном случае речь идет об определении типа. Части синтаксиса. Части речи, если хотите. Частица, которую понимает компилятор. В случае языка Си, компилятор будет определять имя vals как массив переменной длины. Компилятор языка с++ ничего подобного в принципе не умеет. Взгляните сюда: Код:
Последний раз редактировалось _Bers; 02.09.2014 в 18:56. |
|
![]() |
![]() |
![]() |
#20 | ||
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
Мне сказали: такого термина на плюсах не существует. "Но ведь это всего лишь слэнг!" - возвразил я - мы ж тут не официальный документ стандарта пишем. Вроде понятно о чем речь? Я конечно понимаю, люди позволяют себе любые вольности и допущение, ежели они пуще способствуют пониманию. Однако, вот лично я никогда бы не подумал, что под "динамическим массивом" кто то будет подразумевать std::vector. Более того, боюсь что вот этот человек вас так же не правильно поймет: Цитата:
То ли один из вас передает вектора по указателям? На моей практике обычно "динамическими массивами" обзывали именно указатели, которые хранили адрес кучи. И передавали в функцию указатель и длину. А вовсе не вектор. Который все нормальные люди передают по ссылке. Резюмируя: Вместо того, что бы называть "вектор" "вектором" вы начали какую то байду разводить, которая только запутывает. А нас ведь и другие люди тоже читают. Некоторые новички. Не нужно прививать им дурных наклонностей. Последний раз редактировалось _Bers; 02.09.2014 в 18:56. |
||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как добавить новую пустую строку (для заполнения данными) в DBGridEh? | sergeykom | Компоненты Delphi | 0 | 13.04.2014 17:48 |
Передать Variant и Массив в функцию VBA | sir.andrey | Помощь студентам | 0 | 13.04.2013 06:23 |
Как передать Динамический массив в функцию? | RainCat | Помощь студентам | 4 | 13.04.2011 11:25 |
Передать двумерный массив через сокет (Debian) | Phaeleh | Qt и кроссплатформенное программирование С/С++ | 1 | 29.11.2010 07:08 |
Как передать параметру записи, что в нем параметр это статический массив с данными? | SkAndrew | Общие вопросы Delphi | 6 | 26.06.2009 02:02 |