Site icon Learn C++

Insert Iterators Adapters in C++

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

[crayon-676793d7db667160381119/]

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:

[crayon-676793d7db671788599513/]

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

Exit mobile version