Мне нужно перебрать вектор от конца до начала. «Правильный» способ -
for(std::vector<SomeT>::reverse_iterator rit = v.rbegin(); rit != v.rend(); ++rit)
{
//do Something
}
. Когда doSomething требует знания фактического индекса, тогда для его получения необходимо выполнить некоторые вычисления с помощью rit, например index = v.size () - 1 - (rit - v.rbegin )
Если индекс все равно нужен, я твердо верю, что лучше выполнить итерацию, используя этот индекс
for(int i = v.size() - 1; i >= 0; --i)
{
//do something with v[i] and i;
}
Это дает предупреждение о том, что i
подписан и v.size ()
без знака.
Переход на
for (unsigned i = v.size () - 1; i> = 0; --i)
просто функционально неверен, потому что это, по сути, бесконечный цикл :)
Какой эстетически хороший способ делать то, что я хочу делать,
Надеюсь, я не ищу чего-то, что не требует? существует:)