4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||
Многомерный массив и массив массивов20.12.2012, 09:24. Показов 5484. Ответов 66
Метки нет (Все метки)
На паскале это синонимы. Например, всё валидно:
0
|
20.12.2012, 09:24 | |
Ответы с готовыми решениями:
66
Многомерный массив. С++ Многомерный массив Многомерный массив многомерный массив |
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
20.12.2012, 09:31 | 2 |
В С++ многомерный массив это тоже массив массивов.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||
20.12.2012, 09:59 [ТС] | 3 | |||||
Нет.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
20.12.2012, 10:06 | 4 |
В С++ многомерный массив это одномерный массив массивов, причем массивов столько, сколько там измерений.
В Паскале также. Память, она и есть память. Просто синтаксис другой
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||||||||||||||||
20.12.2012, 10:11 [ТС] | 5 | ||||||||||||||||||||
Не только.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
20.12.2012, 10:17 | 6 |
Это не значит, что многомерный массив в C++ это не массив массивов. Можно и без циклов обойтись
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
20.12.2012, 10:20 [ТС] | 7 |
А неизбежно вытекает зависимость времени копирования от мозгов двух программистов, которые писали компилятор и приложение.
Добавлено через 20 секунд Это как? Добавлено через 1 минуту На паскале многомерный массив и массив массивов различаются только синтаксически и только при конкретном обращении, а при следующем обращении уже можно использовать другой синтаксис. На c/c++ нет второго синтаксиса, значит нет и синонима.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
20.12.2012, 10:27 [ТС] | 9 |
Простой пример: индесы элемента есть координаты центра описываемой этим элементом ячейки шлаковой ванны по разным осям. На паскале я могу обойтись тремя индексами, на c++ буду вынужден юзать один векторный индекс. А отсюда или лишний вызов на каждом шаге цикла контруктора вектора, или придётся явно указать, что все три счётчика есть поля вектора. На паскале ООП на пустом месте не навязывается, нет ни создания объекта для его использования в единственной операции, ни явного объединения индексов в единую сущность. А на c++ я вынужден или класть в стакан тонны синтаксического сахара, или маяться короткоживущими объектами. Вместо одной крупинки синтаксического сахара.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
||||||
20.12.2012, 10:27 | 10 | |||||
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
20.12.2012, 10:36 [ТС] | 11 |
Массив у меня динамический массив-объект. Да, есть ещё возможность каждый тип массива-элемента сделать отдельным классом. Но это тонны синтаксического дёгтя.
Добавлено через 1 минуту Элементарно: элементы двумерного массива адресуются двумя индексами через запятую в общих скобках. И это именно альтернативная синтаксическая конструкция, так что искать здесь семантическую разницу не нужно. Синонимы не могут различаться семантически, иначе это не синонимы.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
20.12.2012, 10:37 | 12 |
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||
20.12.2012, 10:38 [ТС] | 13 | |||||
И к ней ещё одна линейная с указателями на нулевые элементы массивов-элементов:
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
20.12.2012, 10:40 | 14 |
Это Паскаль
А В C++ первый индекс в первой скобке, второй во второй, третий в третей и т.д.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||||||
20.12.2012, 10:46 [ТС] | 15 | ||||||||||
В паскале можно так и так, но второй вариант соответствует массиву массивов, а через запятую - многомерному массиву. Семантически это одно и тоже, на то это и синонимы. Но это два альтренативных синтаксиса и два варианта прочтения. Как
0
|
20.12.2012, 10:51 | 16 | |||||
На самом деле в языке C есть двумерные массивы и есть массивы массивов. Они описываются и инициализируются по-разному. Их различие обнаруживается если мы попросим компилятор дать нам их длину. Компилятор их четко различает. Однако синтаксис обращения к элементам один и тот же, поскольку запятая в языке C занята под знак операции и ее использование внутри квадратных скобок имеет совсем другой смысл. Компилятор даже позволяет обращаться с двумерным массивом как с массивом массивов, но в реальных программах это вряд ли стоит использовать.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
20.12.2012, 11:04 | 17 |
а что такое массив массивов?
Добавлено через 11 минут memcpy например
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
20.12.2012, 11:05 | 18 |
0
|
20.12.2012, 11:12 | 19 |
Конечно. А как еще иначе реализовать массив массивов? Можно еще как массив объектов, в которых переопределена операция []. Вы такую конструкцию называете массивом массивов?
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
20.12.2012, 11:27 | 20 |
char *sp[]
здесь *sp[]= объект типа char и какая разница? Вы сами сказали, что это массив массивов Добавлено через 5 минут Шаблоны вообще-то есть
0
|
20.12.2012, 11:27 | |
20.12.2012, 11:27 | |
Помогаю со студенческими работами здесь
20
Многомерный массив, Си!!! Многомерный массив Многомерный массив многомерный массив Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |