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

The Move Iterator Adapter in C++

The dereference prefix operator * being applied to iterator returns the lvalue reference to the element pointed by the iterator. Therefore, algorithms such as std::copy or std::transform calls copying constructors of processed elements, for example:

However it’s possible to force algorithms to call moving constructors when it’s appropriate for performance reasons by using the special adapter called std::move_iterator provided by the standard library. This adapter class defines the dereference operator * in such a way that it returns the rvalue (rather than lvalue) reference to the element pointer by the iterator. The object of type std::move_iterator can be conveniently created by the function std::make_move_iterator that deduces the underlying type of the iterator object from it’s argument automatically, for example:

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
Artificial Intelligence TechC++C++17C++20Learn C++

How To Create Simple Generative AI Code In C++

C++C++17Language FeatureLearn C++

How To Use The SVG Image Format With Skia In C++ Builder

C++C++17Language FeatureLearn C++

How To Use Skia Images in C++ Builder?

C++C++17Code SnippetGame DevelopmentLanguage FeatureLearn C++

What Is Skia In Modern C++?