I've been mostly working in Python and C++11 so a friend and I made this https://github.com/ryanhaining/cppitertools
so you could do things like this:
for (auto i : range(1, 10, 2)) { ... }
for (auto p : enumerate(vec)) { ... }
for (auto n : imap([] (const int &i) {return i*i;}, vec)){...}