Как сделать цикл for в обратном порядке на C++?

Пользователь

от montana_hand , в категории: C/C++ , 3 года назад

Как сделать цикл for в обратном порядке на C++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dmitrypro77 , 3 года назад

@montana_hand Вы можете использовать for цикл и объявить начально значение как длину массива и затем i-- > 0 чтобы запустить цикл в обратном порядке на C++, пример кода на C++:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#include <iostream>

int main(int argc, char *argv[]) {
    int arr[3] = {1, 2, 3};
    for (int i = sizeof arr / sizeof arr[0]; i-- > 0;) {
        std::cout << arr[i];
    }

    // Вывод: 321

    return 0;
}


Всегда открыт для интересных проектов. Ссылки на мои соц. сети в профиле.

Пользователь

от abel , 2 года назад

@montana_hand 

В C++ есть несколько способов создания цикла for в обратном порядке. Один из них:

1
2
3
for (int i = 10; i >= 0; i--) {
    // Код, который нужно выполнять в цикле
}


В этом примере цикл начинается с переменной i, равной 10, и каждый раз уменьшается на 1 до тех пор, пока не достигнет 0 (i >= 0).


Другой способ это с помощью STL reverse_iterator, с помощью которого можно проитерировать по контейнеру в обратном порядке:

1
2
3
4
5
std::vector<int> v = {1,2,3,4,5};
for(auto it = v.rbegin(); it!= v.rend();++it)
{
    std::cout<<*it<<" ";
}


И еще один способ это с помощью функции range-based for loop и адаптера reverse:

1
2
3
4
5
std::vector<int> v = {1,2,3,4,5};
for (int x: std::reverse_iterator<std::vector<int>::iterator>(v.end()))
{
    std::cout<<x<<" ";
}