pp/iterator/bidirectional_iterator "cpp/iterator/bidirectional iterator") is a random-access iterator, supporting advancement in constant time and subscripting   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_random_access_iterator&action=edit)  
[ contiguous_iterator  ](/w/cpp/iterator/contiguous_iterator "cpp/iterator/contiguous iterator") (C++20)  |  specifies that a [ ` random_access_iterator ` ](/w/cpp/iterator/random_access_iterator "cpp/iterator/random access iterator") is a contiguous iterator, referring to elements that are contiguous in memory   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_contiguous_iterator&action=edit)  
  
###  [ [ edit ](/mwiki/index.php?title=cpp/iterator&action=edit&section=9
"Edit section: Iterator associated types") ]  Iterator associated types

Defined in namespace ` std `  
---  
[ incrementable_traits  ](/w/cpp/iterator/incrementable_traits "cpp/iterator/incrementable traits") (C++20)  |  computes the difference type of a [ ` weakly_incrementable ` ](/w/cpp/iterator/weakly_incrementable "cpp/iterator/weakly incrementable") type   
(class template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_incrementable_traits&action=edit)  
[ indirectly_readable_traits  ](/w/cpp/iterator/indirectly_readable_traits "cpp/iterator/indirectly readable traits") (C++20)  |  computes the value type of an [ ` indirectly_readable ` ](/w/cpp/iterator/indirectly_readable "cpp/iterator/indirectly readable") type   
(class template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_indirectly_readable_traits&action=edit)  
[ iter_value_t  iter_reference_t  iter_const_reference_t  iter_difference_t  iter_rvalue_reference_t  iter_common_reference_t  ](/w/cpp/iterator/iter_t "cpp/iterator/iter t") (C++20)  (C++20)  (C++23)  (C++20)  (C++20)  (C++20)  |  computes the associated types of an iterator   
(alias template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_iter_t&action=edit)  
  
###  [ [ edit ](/mwiki/index.php?title=cpp/iterator&action=edit&section=10
"Edit section: Iterator primitives") ]  Iterator primitives

[ iterator_traits  ](/w/cpp/iterator/iterator_traits "cpp/iterator/iterator traits") |  provides uniform interface to the properties of an iterator   
(class template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_iterator_traits&action=edit)  
---|---  
[ input_iterator_tag  output_iterator_tag  forward_iterator_tag  bidirectional_iterator_tag  random_access_iterator_tag  contiguous_iterator_tag  ](/w/cpp/iterator/iterator_tags "cpp/iterator/iterator tags") (C++20)  |  empty class types used to indicate iterator categories   
(class)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_iterator_tags&action=edit)  
[ iterator  ](/w/cpp/iterator/iterator "cpp/iterator/iterator") (deprecated in C++17)  |  base class to ease the definition of required types for simple iterators   
(class template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_iterator&action=edit)  
  
###  [ [ edit ](/mwiki/index.php?title=cpp/iterator&action=edit&section=11
"Edit section: Iterator customization points") ]  Iterator customization
points

Defined in namespace ` std::ranges `  
---  
[ iter_move  ](/w/cpp/iterator/ranges/iter_move "cpp/iterator/ranges/iter move") (C++20)  |  casts the result of dereferencing an object to its associated rvalue reference type   
(customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/ranges/dsc_iter_move&action=edit)  
[ iter_swap  ](/w/cpp/iterator/ranges/iter_swap "cpp/iterator/ranges/iter swap") (C++20)  |  swaps the values referenced by two dereferenceable objects   
(customization point ob