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: #include #include #include #include auto deep_copy_to_list(const std::vector& src) { std::list dst(src.size()); // allocate the memory to…
Read more
C++C++11C++14C++17IteratorsLearn C++

Reverse Iterators in C++

By using bidirectional iterator or random access iterator (see Iterator Categories in C++) it’s possible to traverse the sequence in backward direction by using operator -- or by using the special adapter template class std::reverse_iterator. But why to bother with reverse…
C++C++11C++14C++17IteratorsLearn C++

Categories of Iterators in C++

Conceptually, iterators are consists of five categories: input iterator is intended to traverse sequences in the forward direction and provides the read access to the pointed sequence element;output iterator is intended to traverse sequences in the forward direction and provides the write access to the pointed sequence element;forward iterator is intended to traverse sequences in the forward…
Read more