/w/cpp/concepts/semiregular "cpp/concepts/semiregular") type can be incremented with pre- and post-increment operators   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_weakly_incrementable&action=edit)  
[ incrementable  ](/w/cpp/iterator/incrementable "cpp/iterator/incrementable") (C++20)  |  specifies that the increment operation on a [ ` weakly_incrementable ` ](/w/cpp/iterator/weakly_incrementable "cpp/iterator/weakly incrementable") type is [ equality-preserving ](/w/cpp/concepts#Equality_preservation "cpp/concepts") and that the type is [ ` equality_comparable ` ](/w/cpp/concepts/equality_comparable "cpp/concepts/equality comparable")   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_incrementable&action=edit)  
[ input_or_output_iterator  ](/w/cpp/iterator/input_or_output_iterator "cpp/iterator/input or output iterator") (C++20)  |  specifies that objects of a type can be incremented and dereferenced   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_input_or_output_iterator&action=edit)  
[ sentinel_for  ](/w/cpp/iterator/sentinel_for "cpp/iterator/sentinel for") (C++20)  |  specifies a type is a sentinel for an [ ` input_or_output_iterator ` ](/w/cpp/iterator/input_or_output_iterator "cpp/iterator/input or output iterator") type   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_sentinel_for&action=edit)  
[ sized_sentinel_for  ](/w/cpp/iterator/sized_sentinel_for "cpp/iterator/sized sentinel for") (C++20)  |  specifies that the  \-  operator can be applied to an iterator and a sentinel to calculate their difference in constant time   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_sized_sentinel_for&action=edit)  
[ input_iterator  ](/w/cpp/iterator/input_iterator "cpp/iterator/input iterator") (C++20)  |  specifies that a type is an input iterator, that is, its referenced values can be read and it can be both pre- and post-incremented   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_input_iterator&action=edit)  
[ output_iterator  ](/w/cpp/iterator/output_iterator "cpp/iterator/output iterator") (C++20)  |  specifies that a type is an output iterator for a given value type, that is, values of that type can be written to it and it can be both pre- and post-incremented   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_output_iterator&action=edit)  
[ forward_iterator  ](/w/cpp/iterator/forward_iterator "cpp/iterator/forward iterator") (C++20)  |  specifies that an [ ` input_iterator ` ](/w/cpp/iterator/input_iterator "cpp/iterator/input iterator") is a forward iterator, supporting equality comparison and multi-pass   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_forward_iterator&action=edit)  
[ bidirectional_iterator  ](/w/cpp/iterator/bidirectional_iterator "cpp/iterator/bidirectional iterator") (C++20)  |  specifies that a [ ` forward_iterator ` ](/w/cpp/iterator/forward_iterator "cpp/iterator/forward iterator") is a bidirectional iterator, supporting movement backwards   
(concept)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/iterator/dsc_bidirectional_iterator&action=edit)  
[ random_access_iterator  ](/w/cpp/iterator/random_access_iterator "cpp/iterator/random access iterator") (C++20)  |  specifies that a [ ` bidirectional_iterator ` ](/w/cpp/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/contig