The record iterator user interface as it exists now was selected over the STL style of iterator interfaces for several reasons. Tests of iterator validity are frequent, which can lead to noticeable CPU overhead if an iterator begin() or end() must be constructed for each such test. In addition, it is more difficult to maintain classes which return instances of other classes. Another consideration is that it is impossible in C++ to overload begin() on its return type, making it difficult to implement multiple begin() and end() methods in each Trybos record class for each record iterator class. Many CDF C++ programmers seem to find the iterator style used by Barton and Nackman more appealing (though perhaps that is simply because the book is more readable that many STL guides), Trybos has adapted a similar interface to meet FNAL and CDF C++ style guidelines.
All examples here use ``pre-increment'' instead of ``post-increment'', as in ++my_iter instead of my_iter++. Post-incrementing generally involves a little extra CPU time relative to pre-incrementing, unless the compiler's optimizer can optimize the implied CPU overhead away. Rather than depend on this behavior, all examples simply use pre-incrementing, unless post-incrementing is specifically required.