Практические шаблоны использования
Фильтрация и преобразование данных
Фильтрация элементов
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// Фильтрация чётных чисел
for (int num : numbers) {
if (num % 2 == 0) {
std::cout << num << " ";
}
}
return 0;
}
Преобразование элементов
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
// Возведение каждого числа в квадрат
for (int& num : numbers) {
num = num * num;
}
// Вывод преобразованных чисел
for (int num : numbers) {
std::cout << num << " ";
}
return 0;
}
Работа со сложными структурами данных
Вложенная итерация
#include <iostream>
#include <vector>
int main() {
std::vector<std::vector<int>> matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// Итерация по двумерному вектору
for (const auto& row : matrix) {
for (int num : row) {
std::cout << num << " ";
}
std::cout << std::endl;
}
return 0;
}
Шаблоны итерации
graph TD
A[Шаблоны итерации] --> B[Простая линейная итерация]
A --> C[Вложенная итерация]
A --> D[Условная итерация]
A --> E[Преобразование]
Расширенные методы итерации
Итерация с индексом
#include <iostream>
#include <vector>
int main() {
std::vector<std::string> fruits = {"apple", "banana", "cherry"};
// Итерация с индексом
for (size_t i = 0; i < fruits.size(); ++i) {
std::cout << "Индекс " << i << ": " << fruits[i] << std::endl;
}
return 0;
}
Общие случаи использования
| Сценарий использования |
Описание |
Пример |
| Обработка данных |
Преобразование или фильтрация коллекций |
Возведение чисел в квадрат |
| Настройка |
Итерация по настройкам |
Чтение параметров конфигурации |
| Инициализация |
Заполнение структур данных |
Заполнение массивов или векторов |
Лучшие практики
- Используйте константные ссылки для чтения без изменения.
- Избегайте изменения контейнера во время итерации.
- Выбирайте наиболее подходящий метод итерации.
Учёт производительности
graph TD
A[Производительность] --> B[По значению]
A --> C[По ссылке]
A --> D[По константной ссылке]
B --> E[Накладные расходы на копирование]
C --> F[Прямое изменение]
D --> G[Наиболее эффективно для больших объектов]
Заключение
Циклы for с диапазоном предоставляют мощные и гибкие механизмы итерации. LabEx рекомендует освоить эти шаблоны для написания более выразительного и эффективного кода C++.