Массивы и работа с ними в С++: 7-я часть гайда по языку программирования
Разбираемся, как пользоваться одним из самых удобных способов хранения данных.
vlada_maestro / shutterstock
Это седьмая часть из серии статей «Глубокое погружение в C++». В прошлой статье мы узнали, как использовать циклы while, do-while и for и сокращать с их помощью код. Сегодняшняя тема — массивы.
Массив — это определённое число ячеек памяти, расположенных подряд. Они позволяют эффективно хранить однотипные данные: зарплаты сотрудников, координаты персонажей, баллы учеников и так далее.
На картинке выше показано объявление массива из четырёх элементов целочисленного типа. Несмотря на то что значения элементам не присваивались, массив всё равно будет занимать такой объём памяти, который занимали бы четыре переменные. В данном случае — 16 байт.
Массивы очень удобные и быстрые: расположение ячеек друг за другом позволяет увеличить скорость работы с данными в них.
Как объявить массив в C++
Есть несколько способов объявления массивов:
Нумерация в массивах начинается с нуля, а не с единицы. При этом длина остается обычной. То есть в массиве длиной в десять ячеек индекс последней будет 9.
Важно! Массивы — иммутабельные (неизменяемые). Вы можете скорректировать значения отдельных элементов, но не сам массив — нельзя изменить его длину или присвоить одному массиву другой.
Всегда следите, чтобы не обращаться к ячейке данных, которая находится за пределами массива. Если длина равна 5, а вы обратитесь к ячейке под индексом 5, 6, 7 и так далее, то результат может быть непредсказуемым.
Вот что выведет такая программа:
При этом вывод каждый раз будет разным, потому что в данный момент эта ячейка памяти может хранить что угодно.
Как использовать массивы в C++
Чтобы использовать какой-нибудь элемент массива, к нему нужно обратиться с помощью индекса. Это удобно, когда нужно получить один или два элемента, но если нужно перебрать весь массив, то лучше воспользоваться циклами:
Здесь выполняются операции с каждой ячейкой массива, а роль индексов выполняет итератор (переменная i).
Также с помощью циклов можно выполнить поиск по массиву. Например, чтобы найти минимальное или максимальное число:
Вот что мы видим на экране:
Также можно использовать несколько массивов, чтобы хранить связанные данные. Например, создадим массив names, в котором будут имена сотрудников, и salaries, в котором будут зарплаты.
Вот результат:
Вы можете использовать сокращённую запись цикла for:
В этом примере nums — массив, а number — идентификатор, по которому можно обратиться к текущему элементу массива. То есть если это вторая итерация цикла, то при выводе number мы получим значение элемента nums[1].
Также вы можете указать в качестве типа данных auto — тогда программа сама определит, какой массив нужно перебрать.
Многомерные массивы в C++
Многомерные массивы — это что-то вроде массива внутри массива. Двумерный массив называется матрицей.
Самый простой пример матрицы — двумерная карта. Строки выполняют роль оси X, а столбцы — оси Y. С помощью такого массива можно вывести карту какой-нибудь игры.
Получается очень простая игра:
Также вы можете создавать массивы с ещё большим количеством измерений: трёхмерные, четырёхмерные и так далее. Однако в них сложно ориентироваться, поэтому использовать их рекомендуется только в тех случаях, когда без них не обойтись. Например, в момент отрисовки трёхмерной графики.
Заключение
Массивы в программировании используются очень часто — как в играх, так и в машинном обучении. Поэтому уметь с ними работать очень важно. В следующий раз мы поговорим о готовых решениях, которые облегчают жизнь.