Insert Iterators Adapters in C++

Let’s slightly modify the example from The Move Iterator Adapter in C++ post:

In the example above the object of type std::list<std::string> is empty just after the construction and attempt to use std::copy for copying elements from src will cause memory corruption is case when the given src is not empty. However, the standard library provides special adapters which are template classes: std::back_insert_iterator, std::front_insert_iterator and std::insert_iterator. These adapters appends, prepends and inserts the elements to a corresponding container by using push_back(), push_front() and insert() methods accordingly, rather than overwriting the existing elements in the destination container. In other words, the destination container grows in size by one element whenever a value is written through an insert iterator adapter. These adapters can be conveniently created by using function templates std::back_inserter(), std::front_inserter() and std::inserter(), for example:

Finally, please note, insert adapters are output iterators (see Categories of Iterators in C++) and thus it’s not possible to read through them.


Oh hi there 👋
It’s nice to meet you.

Sign up to receive awesome C++ content in your inbox, every day.

We don’t spam! Read our privacy policy for more info.

Related posts
C++Learn C++Videos

Learn C++ With Design Patterns For Handling/Reporting Errors In C++: Parallel Algorithms And Executors by Mark Hoemmen (CPPCon 2020) Videos

C++Introduction to C++Learn C++

Learn To Use Break And Continue In Loops With C++

C++Introduction to C++Learn C++

Learn To Define And Use Arrays In C++

C++Learn C++Videos

Learn C++ With Back to Basics: Design Pattern by Mike Shah (CPPCon 2020) Video