Ответ
В C++ есть несколько способов обхода массивов, выбор зависит от типа массива (C-style или STL-контейнер) и версии стандарта.
- Классический цикл for с индексом — универсальный способ для массивов в стиле C и контейнеров с оператором
[].int arr[5] = {1, 2, 3, 4, 5}; for (size_t i = 0; i < 5; ++i) { std::cout << arr[i] << ' '; } - Цикл for с использованием указателей — низкоуровневый подход, основанный на арифметике указателей.
int* begin = arr; int* end = arr + 5; for (int* ptr = begin; ptr != end; ++ptr) { std::cout << *ptr << ' '; } - Range-based for loop (C++11) — самый современный и безопасный способ для любых диапазонов (STL-контейнеры, C-массивы, списки инициализации).
for (int value : arr) { std::cout << value << ' '; } // Для избежания копирования больших объектов используйте ссылку: for (const auto& value : arr) { /* ... */ } - Использование итераторов — стандартный способ для STL-контейнеров (
std::vector,std::array,std::list).std::vector<int> vec = {1, 2, 3}; for (auto it = vec.begin(); it != vec.end(); ++it) { std::cout << *it << ' '; } - Использование стандартных алгоритмов — декларативный подход, например, с
std::for_each.#include <algorithm> std::for_each(std::begin(arr), std::end(arr), [](int n) { std::cout << n << ' '; });
Рекомендация: Для современного C++ предпочтительнее использовать range-based for loop или алгоритмы STL, так как они менее подвержены ошибкам (например, выходу за границы).