Фактическим стандартом (библиотекой) для этого является range-v3 - вот как это выглядит:
for (auto& elem : ranges::view::slice(my_vector, 0, 5)) { ... }
// or
for (auto& elem : ranges::view::take(my_vector, 5)) { ... }
Если вам нужна поддержка диапазона в C ++ 03, Boost.Range является альтернативой, хотя его реализация довольно проста в сравнении.