Yep, iterators are one of the most annoying things in C++. That's why I love range for in C++0x - instead of writing this, for example:
for(std::vector<std::string>::iterator it = vec.begin(); it != vec.end(); it++)
you can just do:
for(std::string x : vec)
So awesome!