Массивы в C++ на примерах

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

В C++ есть классические массивы и более удобные контейнеры вроде std::vector. Для первого понимания полезно увидеть обычный массив, но в реальной учебной практике я бы довольно быстро переходил к vector

Первый массив

#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 часто будет практичнее

Мини-задание

  1. Создай массив цен.
  2. Выведи все цены.
  3. Посчитай сумму.
  4. Найди максимальную цену.
  5. Повтори то же на 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++

Чтобы тема складывалась в понятный маршрут, рядом лучше открыть:

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x