Я бы не стал увеличивать / уменьшать и проверять условие в теле цикла, а ставить его там, где вы больше всего этого ожидаете:
std::list<int> mylist{1,2,3,4,5};
int cnt = 3;
for (auto rit = mylist.rbegin(); rit != mylist.rend() && cnt > 0; ++rit,--cnt) {
std::cout << *rit << " ";
}
Теперь вы можете, например, добавить continue
в любом месте тела цикла, не нарушая цикл.
PS: на самом деле мне больше нравятся другие ответы, но я оставлю этот, так как это минимальные изменения, и imho, увеличивающего / проверяющего счетчик цикла внутри тела цикла, следует избегать, если это возможно (и здесь это возможно) ).