Итерация с помощью цикла For
Часть раздела Логика и управление потоком путешествия по C++ на Coddy. Урок 14 из 56.
Теперь, когда вы знаете, как обращаться к отдельным элементам и узнавать размер вектора, давайте научимся последовательно обрабатывать каждый элемент с помощью классического цикла for. Этот подход сочетает метод .size() с доступом по индексу, чтобы по очереди перебрать все элементы.
Классический цикл for использует переменную-индекс, которая начинается с 0 и увеличивается, пока не достигнет размера вектора:
std::vector<std::string> names = {"Alice", "Bob", "Charlie"};
for (int i = 0; i < names.size(); i++) {
std::cout << names[i] << std::endl;
}В этом примере условие цикла i < names.size() гарантирует, что мы не выйдем за границы вектора, а names[i] обращается к каждому элементу по текущему индексу. Цикл выведет каждое имя на отдельной строке.
Этот шаблон — основа обработки наборов данных. Переменная-индекс i даёт вам точный контроль над тем, с каким элементом вы работаете, поэтому она пригодится, когда нужно знать позицию каждого элемента или изменять элементы во время перебора.
Обратите внимание: после завершения цикла i равно names.size(), в данном случае 3, потому что цикл останавливается, как только условие i < names.size() становится ложным.
Задание
ЛегкоСоздайте программу, которая с помощью классического цикла for перебирает вектор названий товаров и выводит их в виде нумерованного списка.
На вход будут поданы:
- Целое число
n— количество товаров - Затем
nстрок — названия товаров
Ваша программа должна:
- Создать
std::vector<std::string>с именемproducts - С помощью
push_back()добавить в вектор каждое изnназваний товаров - Перебрать вектор классическим циклом for с переменной-индексом
- В условии цикла использовать метод
.size() - Обращаться к каждому элементу по индексу с помощью оператора квадратных скобок
[] - Вывести каждый товар с его порядковым номером (начиная с 1) в указанном формате
Используйте точно такой формат вывода:
Product 1: [first product name]
Product 2: [second product name]
Product 3: [third product name]
...Цикл for должен начинаться с индекса 0, использовать условие i < products.size() и увеличивать i на каждой итерации. При выводе прибавляйте к индексу 1, чтобы номера позиций начинались с 1.
Попробуйте сами
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
// Считать количество продуктов
int n;
cin >> n;
// Создать вектор для хранения названий продуктов
vector<string> products;
// Считать названия продуктов и добавить их в вектор
for (int i = 0; i < n; i++) {
string product;
cin >> product;
products.push_back(product);
}
// TODO: Напишите свой код ниже
// Используйте традиционный цикл for для перебора вектора
// и выведите каждый продукт с его порядковым номером
return 0;
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Указатели и память
Что такое указатель?Оператор взятия адресаОператор разыменованияНулевые указателиУказатели и массивыДинамическая память и 'new'Освобождение памяти и 'delete'Итоги: Практика с указателями2Векторы (динамические массивы)
Знакомство с std::vectorСоздание вектораДобавление элементовДоступ к элементамРазмер вектораИтерация с помощью цикла ForRange-based цикл ForУдаление элементовИтоги: операции с векторами5Проект: Инструмент инвентаризации
Настройка проектаДобавление и обновление товаровПотренируйтесь самостоятельно: Онлайн-компилятор C++