Перейти к основному содержимому
Модуль 5 · Урок 1 из 211/18 в курсе~12 min
Уроки модуля (1/2)

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

В C++ управление коллекциями данных в основном осуществляется с помощью двух инструментов: массивов старого стиля (массивов в стиле C) и векторов (std::vector). Понимание разницы между статической и динамической памятью имеет фундаментальное значение для написания эффективного кода.


1. Статические массивы (массивы в стиле C)

Массив — это совокупность элементов одного типа, хранящихся в смежных ячейках памяти. Размер статического массива должен быть известен во время компиляции и не может быть изменен позже:

C++
int grades[5] = {18, 22, 25, 28, 30}; // Array of 5 integers

Ключевые характеристики:

  • Фиксированный размер: вы не можете добавлять или удалять элементы во время выполнения.
  • Распределение стека: очень быстрое выделение и освобождение.
  • Доступ: осуществляется с помощью индексного оператора [] (например, grades[0] для первого элемента).

2. Динамические векторы (std::vector)

Стандартная библиотека шаблонов C++ (STL) предоставляет класс std::vector, который представляет динамический массив. Чтобы использовать его, вы должны включить заголовок <vector>:

C++
#include <vector>

std::vector<int> numbers; // Creates an empty vector of integers

Общие операции:

  • Добавить в конец: метод .push_back(value) вставляет элемент в конец вектора, автоматически перераспределяя память при необходимости.
  • Размер: метод .size() возвращает количество элементов, находящихся в данный момент в векторе.
  • Безопасный доступ. В дополнение к оператору [] вы можете использовать метод .at(index) (например, numbers.at(0)), который выдает исключение, если индекс выходит за пределы.
C++
std::vector<int> scores = {90, 85};
scores.push_back(95); // scores now contains {90, 85, 95}
std::cout << scores.size(); // Prints 3

Попробуйте сами

Упражнение#cpp.m5.l1.e1
Попыток: 0Загрузка…

Объявите std::vector целых чисел с именем Numbers. Добавьте внутрь него значения 10, 20 и 30 с помощью метода .push_back(), а затем распечатайте его размер с помощью Numbers.size().

Загрузка редактора…
Показать подсказку

Объявите вектор с помощью `std::vector<int> Numbers;`, вставьте три числа с помощью `.push_back(value)`и распечатайте его с помощью`std::cout << Numbers.size();`.

Решение доступно после 3 попыток

Упражнение#cpp.m5.l1.e2
Попыток: 0Загрузка…

В основном определяется массив оценок из 5 элементов. Напишите цикл for для вычисления суммы всех элементов массива, сохраните ее в переменной sum и распечатайте с помощью std::cout.

Загрузка редактора…
Показать подсказку

Используйте цикл `for (int i = 0; i < 5; ++i)`и просуммируйте каждый элемент внутри цикла с помощью`sum += Grades[i];`.

Решение доступно после 3 попыток

Quiz#cpp.m5.l1.q1
Готово

Каков правильный метод добавления элемента в конец std::vector в C++?

C++
std::vector<int> numbers; // come aggiungere il valore 50?
Варианты ответа