A common pattern with STL containers is this:
map map;
for(map::iterator iter = map.begin(); iter != map.end(); ++iter)
{
.
C++0x will also offer ranged-based for loop, which is similar to iterative for looping in other languages.
Unfortunately, GCC does not yet implement range-based for (but does implement auto).
Edit: In the meanwhile, also consider typedefing the iterator. It doesn't get around the one-use typedef (unless you put that in a header, which is always an option), but it makes the resulting code shorter by one ::iterator.