Уроки модуля (1/2)
Массивы и векторы
В C++ управление коллекциями данных в основном осуществляется с помощью двух инструментов: массивов старого стиля (массивов в стиле C) и векторов (std::vector). Понимание разницы между статической и динамической памятью имеет фундаментальное значение для написания эффективного кода.
1. Статические массивы (массивы в стиле C)
Массив — это совокупность элементов одного типа, хранящихся в смежных ячейках памяти. Размер статического массива должен быть известен во время компиляции и не может быть изменен позже:
int grades[5] = {18, 22, 25, 28, 30}; // Array of 5 integersКлючевые характеристики:
- Фиксированный размер: вы не можете добавлять или удалять элементы во время выполнения.
- Распределение стека: очень быстрое выделение и освобождение.
- Доступ: осуществляется с помощью индексного оператора
[](например,grades[0]для первого элемента).
2. Динамические векторы (std::vector)
Стандартная библиотека шаблонов C++ (STL) предоставляет класс std::vector, который представляет динамический массив. Чтобы использовать его, вы должны включить заголовок <vector>:
#include <vector>
std::vector<int> numbers; // Creates an empty vector of integersОбщие операции:
- Добавить в конец: метод
.push_back(value)вставляет элемент в конец вектора, автоматически перераспределяя память при необходимости. - Размер: метод
.size()возвращает количество элементов, находящихся в данный момент в векторе. - Безопасный доступ. В дополнение к оператору
[]вы можете использовать метод.at(index)(например,numbers.at(0)), который выдает исключение, если индекс выходит за пределы.
std::vector<int> scores = {90, 85};
scores.push_back(95); // scores now contains {90, 85, 95}
std::cout << scores.size(); // Prints 3Попробуйте сами
Объявите std::vector целых чисел с именем Numbers. Добавьте внутрь него значения 10, 20 и 30 с помощью метода .push_back(), а затем распечатайте его размер с помощью Numbers.size().
Показать подсказку
Объявите вектор с помощью `std::vector<int> Numbers;`, вставьте три числа с помощью `.push_back(value)`и распечатайте его с помощью`std::cout << Numbers.size();`.
Решение доступно после 3 попыток
В основном определяется массив оценок из 5 элементов. Напишите цикл for для вычисления суммы всех элементов массива, сохраните ее в переменной sum и распечатайте с помощью std::cout.
Показать подсказку
Используйте цикл `for (int i = 0; i < 5; ++i)`и просуммируйте каждый элемент внутри цикла с помощью`sum += Grades[i];`.
Решение доступно после 3 попыток
Каков правильный метод добавления элемента в конец std::vector в C++?
std::vector<int> numbers; // come aggiungere il valore 50?