Массивы в C++
Обычный массив
Массив хранит несколько элементов одного типа подряд. Размер обычного встроенного массива фиксирован:
int scores[5] = {10, 20, 30, 40, 50};std::cout << scores[0] << '\n';Индексация начинается с нуля. Для массива из пяти элементов допустимы индексы от 0 до 4. Выход за границы массива — ошибка, которая приводит к неопределённому поведению.
Обход массива
int scores[] = {10, 20, 30, 40, 50};for (int score : scores) { std::cout << score << '\n';}Размер можно получить во время компиляции для встроенного массива в той же области видимости:
constexpr std::size_t count = sizeof(scores) / sizeof(scores[0]);Но этот приём не работает как способ определить размер массива, уже переданного в функцию: там параметр обычно становится указателем. Предпочитай std::array или std::vector.
std::array
std::array — контейнер стандартной библиотеки с фиксированным размером и удобными методами:
#include <array>#include <iostream>std::array<int, 3> values{4, 8, 12};std::cout << values.size() << '\n';std::cout << values.at(1) << '\n';operator[] не проверяет границы, а at() проверяет и при ошибке выбрасывает std::out_of_range.
Двумерные массивы
int board[3][3]{};board[1][2] = 7;Встроенный двумерный массив — это массив массивов. Для динамического размера и сложных таблиц обычно лучше использовать std::vector.
Массивы и функции
При передаче встроенного массива в функцию информация о его размере обычно теряется. Передавай размер отдельно или используй std::array по ссылке либо std::span для представления диапазона элементов без владения ими.
Итог
Массивы полезны для фиксированного набора однотипных элементов. Следи за границами и выбирай std::array для фиксированного размера, а std::vector — для изменяемого.
