Last Updated: May 22, 2026
An iterator adapter is a wrapper that takes an existing iterator (or a container, or a stream) and produces a new iterator whose increment, dereference, or assignment behaviour does something different. The same std::copy call can write into a growing vector, send elements to std::cout, read values from std::cin, or walk a range in reverse, depending on which adapter wraps the source or destination. This chapter covers the four families that come up most often: insert iterators, stream iterators, reverse iterators, and move iterators.