Iterator library

From Cppreference

< cpp
Jump to: navigation, search

Iterators are a generalization of pointers that allow C++ programs to access different containers in a uniform manner. Any algorithm that accepts iterators should accept regular pointers also.

Contents

[edit] Iterator Types

Five iterator categories are defined, according to operations defined on them:

  • Input iterator
allows reading from the iterator object
allows iterating forward without multi-pass guarantee, i. e. reading the same element twice is not guaranteed to produce the same results
  • Output iterator
allows writing to the iterator object
allows iterating forward without multi-pass guarantee
  • Forward iterator
allows reading from the iterator object
allows iterating forward with multi-pass guarantee, i. e. reading the same element twice is guaranteed to produce the same results
  • Bidirectional iterator
allows reading from the iterator object
allows iterating forward and backward with multi-pass guarantee
  • Random access iterator
allows reading from the iterator object
allows iterating forward and backward randomly with multi-pass guarantee

Forward iterators satisfy the requirements of input iterators

[edit] Iterator primitives

provides uniform interface to the properties of an iterator
(class template)
empty class types used to indicate iterator categories
(class)
the basic iterator
(class template)

[edit] Iterator adaptors

iterator adaptor for reverse-order traversal
(class template)
iterator adaptor which dereferences to an rvalue reference
(class template)
creates a std::move_iterator of type inferred from the argument
(function template)
iterator adaptor for insertion at the end of a container
(class template)
creates a std::back_insert_iterator of type inferred from the argument
(function template)
iterator adaptor for insertion at the front of a container
(class template)
creates a std::front_insert_iterator of type inferred from the argument
(function template)
iterator adaptor for insertion into a container
(class template)
creates a std::insert_iterator of type inferred from the argument
(function template)

[edit] Stream iterators

input iterator that reads from std::basic_istream
(class template)
output iterator that writes to std::basic_ostream
(class template)
input iterator that reads from std::basic_streambuf
(class template)
output iterator that writes to std::basic_streambuf
(class template)

[edit] Iterator Operations

Defined in header <iterator>
advances an iterator by given distance
(function)
returns the distance between two iterators
(function)
(C++11)
increment an iterator
(function)
(C++11)
decrement an iterator
(function)

[edit] Range Access

Defined in header <iterator>
(C++11)
returns an iterator to the beginning of a container or array
(function)
(C++11)
returns an iterator to the end of a container or array
(function)