Здравствуйте, Аноним, Вы писали:
А>на самом деле я бы написал тут вообще вот так. и это имхо было _правильно_ в данном случае:
А>А> for( int i = 0; i < iv.size(); i++ )
А> ++iv[i];
А>
А>все предельно просто и понятно. и компильнется быстрее.
Правильно тут использовать не int, а std::size_t. И то не очень. Код с for(C::iterator) будет работать для любого контейнера, даже для iterator_range<istream_iterator>, — после соответствующей замены типа итератора. Код с transform (как и foreach, кстати), может быть использован для любого контейнера без единой замены. Код же с индексом годится только для vector/deque, причем для второго падает эффективность. Читаемость всех 4 вариантов одинакова для сколько-нибудь опытного программера, эффективность (пока у нас всё еще std::vector) одинакова для сколько-нибудь вменяемого оптимизатора. Выводы?