counted  ](/w/cpp/ranges/view_counted "cpp/ranges/view counted")  
[ common_view  views::common  ](/w/cpp/ranges/common_view "cpp/ranges/common
view")  
  
  
  
|  [ reverse_view  views::reverse  ](/w/cpp/ranges/reverse_view
"cpp/ranges/reverse view")  
---  
[ as_const_view  views::as_const  ](/w/cpp/ranges/as_const_view "cpp/ranges/as
const view") (C++23)  (C++23)  
[ elements_view  views::elements  ](/w/cpp/ranges/elements_view
"cpp/ranges/elements view")  
[ keys_view  views::keys  ](/w/cpp/ranges/keys_view "cpp/ranges/keys view")  
[ values_view  views::values  ](/w/cpp/ranges/values_view "cpp/ranges/values
view")  
[ enumerate_view  views::enumerate  ](/w/cpp/ranges/enumerate_view
"cpp/ranges/enumerate view") (C++23)  (C++23)  
[ zip_view  views::zip  ](/w/cpp/ranges/zip_view "cpp/ranges/zip view")
(C++23)  (C++23)  
[ zip_transform_view  views::zip_transform  ](/w/cpp/ranges/zip_transform_view
"cpp/ranges/zip transform view") (C++23)  (C++23)  
  
|  [ adjacent_view  views::adjacent  ](/w/cpp/ranges/adjacent_view
"cpp/ranges/adjacent view") (C++23)  (C++23)  
---  
[ views::pairwise  ](/w/cpp/ranges/adjacent_view "cpp/ranges/adjacent view")
(C++23)  
[ adjacent_transform_view  views::adjacent_transform
](/w/cpp/ranges/adjacent_transform_view "cpp/ranges/adjacent transform view")
(C++23)  (C++23)  
[ views::pairwise_transform  ](/w/cpp/ranges/adjacent_transform_view
"cpp/ranges/adjacent transform view") (C++23)  
[ chunk_view  views::chunk  ](/w/cpp/ranges/chunk_view "cpp/ranges/chunk
view") (C++23)  (C++23)  
[ slide_view  views::slide  ](/w/cpp/ranges/slide_view "cpp/ranges/slide
view") (C++23)  (C++23)  
[ chunk_by_view  views::chunk_by  ](/w/cpp/ranges/chunk_by_view
"cpp/ranges/chunk by view") (C++23)  (C++23)  
[ stride_view  views::stride  ](/w/cpp/ranges/stride_view "cpp/ranges/stride
view") (C++23)  (C++23)  
[ cartesian_product_view  views::cartesian_product
](/w/cpp/ranges/cartesian_product_view "cpp/ranges/cartesian product view")
(C++23)  (C++23)  
  
[ Range generators ](/w/cpp/ranges#Range_generators "cpp/ranges")  
|  [ std::generator  ](/w/cpp/coroutine/generator "cpp/coroutine/generator")
(C++23)  
---  
  
[ Range adaptor objects ](/w/cpp/ranges#Range_adaptor_objects "cpp/ranges")  
[ Range adaptor closure objects ](/w/cpp/ranges#Range_adaptor_closure_objects
"cpp/ranges")  
|  [ range_adaptor_closure  ](/w/cpp/ranges/range_adaptor_closure
"cpp/ranges/range adaptor closure") (C++23)  
---  
  
[ Helper items ](/w/cpp/ranges#Helper_items "cpp/ranges")  
|  [ _copyable-box_  
_movable-box_ ](/w/cpp/ranges/copyable_wrapper "cpp/ranges/copyable wrapper")
(until C++23)  (C++23)  
---  
  
|  [ _simple-view_ ](/w/cpp/ranges#Helper_concepts "cpp/ranges")  
---  
[ _non-propagating-cache_ ](/w/cpp/ranges#Non-propagating_cache "cpp/ranges")  
  
|  
  
---  
  
  
  
[ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/navbar_content&action=edit)

The ranges library is an extension and generalization of the algorithms and
iterator libraries that makes them more powerful by making them composable and
less error-prone.

The library creates and manipulates range _views_ , lightweight objects that
indirectly represent iterable sequences ( _ranges_ ). Ranges are an
abstraction on top of

  * ` [ ` begin ` , ` end ` ) ` – iterator pairs, e.g. ranges made by implicit conversion from containers. All algorithms that take iterator pairs now have overloads that accept ranges (e.g. [ ` ranges::sort ` ](/w/cpp/algorithm/ranges/sort "cpp/algorithm/ranges/sort") ) 
  * begin ` + ` ` [ ` ​  0  ​  ` , ` size ` ) ` – counted sequences, e.g. range returned by [ ` views::counted ` ](/w/cpp/ranges/view_counted "cpp/ranges/view counted")
  * ` [ ` begin ` , ` _predicate_ ` ) ` – conditionally-terminated sequences, e.g. range returned by [ ` views::take_while ` ](/w/cpp/ranges/take_while_view "cpp/ranges/take while view")
  * ` [ ` begin ` , ` .. ` ) ` – unbounded sequences, e.g. range returned by [ ` view