Массив нужен, когда одного значения мало. Не одна оценка, а список оценок. Не одна цена, а цены товаров. Не один результат, а результаты тестов
В C++ есть классические массивы и более удобные контейнеры вроде std::vector. Для первого понимания полезно увидеть обычный массив, но в реальной учебной практике я бы довольно быстро переходил к vector
- Первый массив
- Вывод массива циклом
- Сумма элементов
- Поиск максимума
- Почему границы важны
- std::vector: удобнее для новичка
- Когда обычный массив, а когда vector
- Мини-задание
- Частые ошибки
- Индекс начинается с 1
- Выход за границы
- Смешали размер и последний индекс
- Забыли include vector
- Ответы на эти вопросы могут быть для вас полезными
- Что такое массив в C++?
- Почему массивы в C++ опасны?
- Что лучше: массив или vector?
- Как узнать размер vector?
- Как добавить элемент в vector?
- Что почитать дальше по C++
Первый массив
#include <iostream>
int main() {
int scores[5] = {8, 10, 7, 9, 6};
std::cout << scores[0] << std::endl;
std::cout << scores[1] << std::endl;
return 0;
}
scores[5] означает массив из 5 целых чисел
Индексы начинаются с нуля:
scores[0]— первый элемент;scores[1]— второй;scores[4]— пятый.
scores[5] уже за пределами массива. Это опасная ошибка
Вывод массива циклом
#include <iostream>
int main() {
int scores[5] = {8, 10, 7, 9, 6};
for (int i = 0; i < 5; i++) {
std::cout << scores[i] << std::endl;
}
return 0;
}
Цикл идет от 0 до 4. Условие i < 5 не дает выйти за границу
Сумма элементов
#include <iostream>
int main() {
int scores[5] = {8, 10, 7, 9, 6};
int sum = 0;
for (int i = 0; i < 5; i++) {
sum = sum + scores[i];
}
std::cout << "Сумма: " << sum << std::endl;
return 0;
}
Каждый проход цикла добавляет очередную оценку к sum
Среднее:
double average = static_cast<double>(sum) / 5;
static_cast<double> нужен, чтобы получить дробный результат, а не целочисленное деление
Поиск максимума
#include <iostream>
int main() {
int scores[5] = {8, 10, 7, 9, 6};
int maxScore = scores[0];
for (int i = 1; i < 5; i++) {
if (scores[i] > maxScore) {
maxScore = scores[i];
}
}
std::cout << "Максимальная оценка: " << maxScore << std::endl;
return 0;
}
Мы берем первый элемент как стартовый максимум, потом сравниваем с остальными
Почему границы важны
Ошибка:
for (int i = 0; i <= 5; i++) {
std::cout << scores[i] << std::endl;
}
При i == 5 программа обращается к шестому элементу, которого нет. В C++ это может не сразу упасть красиво. Можно получить мусор, странное поведение или серьезную ошибку
Правильно:
for (int i = 0; i < 5; i++) {
std::cout << scores[i] << std::endl;
}
std::vector: удобнее для новичка
std::vector — динамический массив из стандартной библиотеки
#include <iostream>
#include <vector>
int main() {
std::vector<int> scores = {8, 10, 7, 9, 6};
scores.push_back(5);
for (int score : scores) {
std::cout << score << std::endl;
}
return 0;
}
Плюсы vector:
- размер может меняться;
- есть метод
size(); - удобно добавлять элементы через
push_back; - хорошо подходит для учебных задач.
Сумма через vector:
int sum = 0;
for (int score : scores) {
sum += score;
}
Когда обычный массив, а когда vector
| Ситуация | Что выбрать |
|---|---|
| Размер известен и не меняется | Обычный массив или std::array |
| Размер меняется | std::vector |
| Учебные задачи на списки данных | std::vector |
| Нужно понять низкий уровень C++ | Обычный массив |
Если ты учишься с нуля и решаешь задачи, vector часто будет практичнее
Мини-задание
- Создай массив цен.
- Выведи все цены.
- Посчитай сумму.
- Найди максимальную цену.
- Повтори то же на
std::vector.
Пример:
std::vector<int> prices = {1200, 4500, 7900, 3000};
Частые ошибки
Индекс начинается с 1
Новичок пишет:
scores[1]
и думает, что это первый элемент. В C++ первый элемент — scores[0]
Выход за границы
scores[5] для массива из 5 элементов — ошибка
Смешали размер и последний индекс
Размер 5, последний индекс 4
Забыли include vector
Для std::vector нужно:
#include <vector>
Ответы на эти вопросы могут быть для вас полезными
Что такое массив в C++?
Это набор элементов одного типа, расположенных под индексами. Индексы начинаются с нуля
Почему массивы в C++ опасны?
Потому что можно выйти за границу массива, и язык не всегда остановит это мягко. Нужно внимательно следить за индексами
Что лучше: массив или vector?
Для многих учебных и практических задач новичку удобнее std::vector. Обычные массивы полезны для понимания базы и низкого уровня
Как узнать размер vector?
Через метод size():
scores.size()
Как добавить элемент в vector?
Через push_back:
scores.push_back(10);
Что почитать дальше по C++
Чтобы тема складывалась в понятный маршрут, рядом лучше открыть:
- Типы данных в C++: int, double, bool, char, string — повторить типы перед хранением набора значений.
- Указатели в C++ без паники — понять связь массива, адреса и указателя.
- Функции в C++: как убрать повтор кода — вынести обработку массива в функцию.
- Сортировки на C++: пузырек и быстрая сортировка — использовать массивы в алгоритмической задаче.



