f_iterator "cpp/iterator/istreambuf iterator") |  input iterator that reads from  [ std::basic_streambuf ](/w/cpp/io/basic_streambuf "cpp/io/basic streambuf")   
(class template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_istreambuf_iterator&action=edit)  
[ ostreambuf_iterator  ](/w/cpp/iterator/ostreambuf_iterator "cpp/iterator/ostreambuf iterator") |  output iterator that writes to  [ std::basic_streambuf ](/w/cpp/io/basic_streambuf "cpp/io/basic streambuf")   
(class template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_ostreambuf_iterator&action=edit)  
  
###  [ [ edit ](/mwiki/index.php?title=cpp/iterator&action=edit&section=15
"Edit section: Iterator operations") ]  Iterator operations

Defined in header ` [ <iterator> ](/w/cpp/header/iterator
"cpp/header/iterator") `  
---  
[ advance  ](/w/cpp/iterator/advance "cpp/iterator/advance") |  advances an iterator by given distance   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_advance&action=edit)  
[ distance  ](/w/cpp/iterator/distance "cpp/iterator/distance") |  returns the distance between two iterators   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_distance&action=edit)  
[ next  ](/w/cpp/iterator/next "cpp/iterator/next") (C++11)  |  increment an iterator   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_next&action=edit)  
[ prev  ](/w/cpp/iterator/prev "cpp/iterator/prev") (C++11)  |  decrement an iterator   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_prev&action=edit)  
[ ranges::advance  ](/w/cpp/iterator/ranges/advance "cpp/iterator/ranges/advance") (C++20)  |  advances an iterator by given distance or to a given bound   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/ranges/dsc_advance&action=edit)  
[ ranges::distance  ](/w/cpp/iterator/ranges/distance "cpp/iterator/ranges/distance") (C++20)  |  returns the distance between an iterator and a sentinel, or between the beginning and end of a range   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/ranges/dsc_distance&action=edit)  
[ ranges::next  ](/w/cpp/iterator/ranges/next "cpp/iterator/ranges/next") (C++20)  |  increment an iterator by a given distance or to a bound   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/ranges/dsc_next&action=edit)  
[ ranges::prev  ](/w/cpp/iterator/ranges/prev "cpp/iterator/ranges/prev") (C++20)  |  decrement an iterator by a given distance or to a bound   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/ranges/dsc_prev&action=edit)  
  
###  [ [ edit ](/mwiki/index.php?title=cpp/iterator&action=edit&section=16
"Edit section: Range access") ]  Range access

These non-member function templates provide a generic interface for
containers, plain arrays, and  [ std::initializer_list
](/w/cpp/utility/initializer_list "cpp/utility/initializer list") .

Defined in header ` [ <array> ](/w/cpp/header/array "cpp/header/array") `  
---  
Defined in header ` [ <deque> ](/w/cpp/header/deque "cpp/header/deque") `  
Defined in header ` [ <flat_map> ](/w/cpp/header/flat_map "cpp/header/flat
map") `  
Defined in header ` [ <flat_set> ](/w/cpp/header/flat_set "cpp/header/flat
set") `  
Defined in header ` [ <forward_list> ](/w/cpp/header/forward_list
"cpp/header/forward list") `  
Defined in header ` [ <iterator> ](/w/cpp/header/iterator
"cpp/header/iterator") `  
Defined in header ` [ <list> ](/w/cpp/header/list "cpp/header/list") `  
Defined in header ` [ <map> ](/w/cpp/header/map "cpp/header/map") `  
Defined in header ` [ <regex> ](/w/cpp/header/regex "cpp/header/regex"