Отличается ли определение размера массива в учебнике С++ от других?

В главе Array (стр. 113, 5-е издание) C++ Primer говорится:

Декларатор массива имеет вид a[d], где a — определяемое имя, а d — размерность массива. Размерность указывает количество элементов и должна быть больше нуля.

Более поздний пример из главы:

int a2[] = {0, 1, 2};  // an array of dimension 3

Как сказал вопрос, это наверняка одномерный массив. Но почему Липпман сказал иначе? Есть ли какое-то непонимание в моем уме?

Это вопрос о том, что компилятор выводит количество элементов из инициализатора?

user4581301 15.12.2020 08:13

@ user4581301 Думаю, дело только в формулировке.

HolyBlackCat 15.12.2020 08:13

Книжное использование термина «измерение» правильно, но не очень распространено в этом контексте. С другой стороны, более распространенное использование термина «измерение» на самом деле ошибочно, поскольку в С++ нет многомерного массива. Например, то, что обычно называют «двухмерным» массивом (как в char twod[X][Y]), на самом деле вовсе не двумерный массив, а скорее одномерный массив, где каждый элемент, в свою очередь, является одномерным массивом. Это скорее эмуляция нескольких измерений.

Some programmer dude 15.12.2020 08:14
int a2[] = {0, 1, 2}; имеет тот же чистый эффект, что и int a2[3] = {0, 1, 2};. Разница лишь в том, что в первом компилятор вычисляет количество элементов в массиве из инициализатора ({0,1,2}). В обоих случаях a2 состоит из 3 элементов. Некоторые называют это «измерением», но в данном контексте это слово немного перегружено (может иметь разные значения).
Peter 15.12.2020 08:24

@Someprogrammerdude - Для математика различие, которое вы делаете, спорно. N-мерный вектор (синоним матрицы или массива) для n > 0 является вектором (n-1)-мерных векторов. (Где нульмерная матрица является скаляром). Это абстрактное представление множества измерений, конкретные реализации которого рассматриваются одинаково. Только специалисты по информатике (точнее, специалисты по информатике, которые используют один или несколько из ряда конкретных языков программирования) проводят различие между двумерным массивом и массивом одномерных массивов.

Peter 15.12.2020 08:42
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
99
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Размер == Длина в этом случае

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

Цитата Декларатор массива имеет вид a[d], где a — определяемое имя, а d — размерность массива. Размерность указывает количество элементов и должна быть больше нуля. Цитата

d - это длина массива, а не размерность. и, как вы указали, данный пример также является одномерным массивом.

Редактировать: как указывали другие, это может быть просто то, как автор определяет вещи в своей книге, так что здесь больше о формулировках. В любом случае держите свои понятия ясными (похоже, вы уже поняли это), потому что определения в других книгах будут другими.

Нет, здесь нет «правильного» или «неправильного». Там используется перегруженный термин, и автор четко указывает, какое значение он использует в своей книге.

StoryTeller - Unslander Monica 15.12.2020 08:33

Другие вопросы по теме