Работа со счетчиками циклов в C++ включает в себя несколько ключевых аспектов, связанных с типами данных, условиями завершения цикла, инкрементацией и декрементацией, а также возможностью использования циклов для итерации по контейнерам и последовательностям. Рассмотрим основные особенности работы со счетчиками циклов:

1. Типы данных счетчиков

В C++ тип данных для счетчиков циклов может быть любым, который поддерживает операции инкремента (++) и декремента (--), а также сравнения (<, <=, >, >=). Наиболее часто используемыми типами являются int, unsigned int, size_t и long long.

Пример использования int:

for (int i = 0; i < 10; ++i) {
    cout << i << " ";
}

2. Условия завершения цикла

Условие завершения цикла определяет, когда цикл должен прекратить выполнение. Обычно это проверка счетчика на соответствие определенному условию.

for (int i = 0; i < 10; ++i) {
    // выполнение кода цикла
}

В этом примере цикл for будет выполняться, пока i меньше 10.

3. Инкрементация и декрементация

Инкрементация (++) и декрементация (--) изменяют значение счетчика цикла на каждой итерации.

for (int i = 0; i < 10; ++i) {
    // код цикла
}
 
for (int j = 10; j > 0; --j) {
    // код цикла
}

7. Операторы перехода

см. 4. Операторы перехода

8. (Доп.) Итерация по последовательностям и диапазонам

C++11 ввел новые возможности для работы с циклами, такие как диапазонные базовые циклы (range-based for loops), которые упрощают итерацию по элементам контейнеров и другим коллекциям данных.

Пример итерации по вектору с использованием диапазонного цикла:

#include <vector>
#include <iostream>
using namespace std;
 
int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
 
    for (int x : vec) {
        cout << x << " ";
    }
    
    return 0;
}

Этот цикл перебирает все элементы вектора vec и выводит их на экран.