0Pricing
C++ Academy · Урок

Массив фиксированного размера std::array

Безопасная замена массива C

«Массив фиксированного размера std::array» — бесплатный урок C++ Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C++ Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C++ Academy содержит 4 уроков всего.

Безопасный массив C

std::array<T, N> — это массив фиксированного размера, который знает собственный размер и ведёт себя как полноценный контейнер. Подключите <array>.

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {1, 2, 3};
    std::cout << a[0] << " " << a.size() << "\n";
}

Знает свой размер

В отличие от обычного массива, который неявно преобразуется в указатель, std::array всегда сообщает свою длину через size().

#include <iostream>
#include <array>
int main() {
    std::array<double, 4> a{};
    std::cout << a.size() << "\n"; // 4
}

Цикл по диапазону

Поскольку это полноценный контейнер, его можно перебирать с помощью цикла по диапазону.

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {10, 20, 30};
    for (int x : a) std::cout << x << " ";
    std::cout << "\n";
}

Проверка границ в at()

at(i) выбрасывает исключение std::out_of_range при недопустимом индексе, а operator[] ничего не проверяет — выбирайте подходящий вариант с учётом требований безопасности.

#include <iostream>
#include <array>
int main() {
    std::array<int, 2> a = {1, 2};
    try { a.at(5); }
    catch (const std::out_of_range&) { std::cout << "out of range\n"; }
}

Первый элемент, back и данные

Удобные средства доступа: front() и back() возвращают первый и последний элементы, а data() предоставляет обычный указатель для API языка C.

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {7, 8, 9};
    std::cout << a.front() << " " << a.back() << "\n";
}

Копирование по значению

std::array корректно копируется с помощью = вместе со всеми элементами, в отличие от обычных массивов, которые неявно преобразуются в указатели.

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {1, 2, 3};
    std::array<int, 3> b = a; // full copy
    b[0] = 99;
    std::cout << a[0] << " " << b[0] << "\n"; // 1 99
}

Работа с алгоритмами

Стандартные алгоритмы принимают итераторы std::array; здесь мы сортируем массив.

#include <iostream>
#include <array>
#include <algorithm>
int main() {
    std::array<int, 4> a = {4, 1, 3, 2};
    std::sort(a.begin(), a.end());
    for (int x : a) std::cout << x << " ";
    std::cout << "\n";
}

Заполнение и сравнение

fill(value) устанавливает значение каждого элемента; std::array также поддерживает поэлементное сравнение с помощью ==.

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a{};
    a.fill(5);
    std::array<int, 3> b = {5, 5, 5};
    std::cout << (a == b) << "\n"; // 1
}

Размер входит в тип

Длина N зафиксирована в типе, поэтому функция, принимающая std::array<int,3>, не примет массив из 4 элементов. Позже здесь поможет std::span.

Выделение памяти в стеке

std::array хранит элементы непосредственно внутри объекта, обычно в стеке, без выделения памяти в куче. Это делает его быстрым и предсказуемым для данных фиксированного размера.

Массив и вектор

Используйте std::array, когда размер известен во время компиляции и не меняется. Используйте std::vector, когда размер может изменяться во время выполнения.

Быстрая проверка

Проверьте, насколько хорошо Вы поняли std::array.

Итоги

Вы изучили std::array:

  • Контейнер фиксированного размера, знающий свой размер и не использующий выделение памяти в куче.
  • at() проверяет границы, а [] — нет.
  • Поддерживает копирование и сравнение, а также работает с алгоритмами.
  • Размер N входит в тип.

Часто задаваемые вопросы

Урок «Массив фиксированного размера std::array» бесплатный?

Да — полный текст урока «Массив фиксированного размера std::array» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C++ Academy, подпишись на CoddyKit PRO. Курс C++ Academy содержит 4 уроков всего.

Чему я научусь в уроке «Массив фиксированного размера std::array»?

Безопасная замена массива C Ты практикуешь C++ Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C++ Academy?

Предыдущий опыт не требуется. C++ Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Массив фиксированного размера std::array»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C++ Academy?

Да. Каждый урок C++ Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Массив фиксированного размера std::array
  2. Основы std::span
  3. Передача span в функции
  4. Границы и поддиапазоны
← Назад к C++ Academy