I have a hunch (though it's just a hunch) that iterators are just as efficient as pointers...although I have no experience to back that up.
[/font]
Regular pointers are iterators. This is by design. For many implementations, the iterator for some classes such as std::vector are simply raw pointers.
Several iterator classes do additional work, but that is the design of the object. Going to the next object of a linked list, binary tree, or hashed container obviously requires some processing. Generally the processing is minimal.
Lots of expert programmers have reviewed the code; for a general purpose library the major implementations are extremely good. Obviously there are occasional improvements you can make by removing the general purpose nature of the library, but then it would no longer be the standard library.
Unfortunately, a certain popular compiler enables iterator debugging for you by default, which makes them slow as hell unless you turn that feature off.
Only a few items have iterator debugging in the Visual C++ implementation, and they are easily seen in the documentation. Most of them do not. And debugging features are generally best turned off in final builds, iterator debugging included.