C++C++11C++14C++17Iterators

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++C++11C++14C++17C++20Learn C++

What Is The Priority Queue (std::priority_queue) In Modern C++?

C++C++11C++14C++17C++20

What Is The Stack (std::stack) In Modern C++?

C++C++11C++14C++17C++20Learn C++

What Is The Queue (std::queue) In Modern C++?

C++C++11C++14C++17Learn C++SyntaxTemplates

What Are The Logical Operation Metafunctions In Modern C++?